class RanzhiLib(): # 构造方法 def __init__(self, driver): self.driver = driver
7、自定义函数运行的先后顺序:完整的单元测试很少只执行一个测试用例,开发人员通常都需要编写多个测试用例才能对某一软件功能进行比较完整的测试,这些相关的测试用例称为一个测试用例集,在PyUnit中是用TestSuite类来表示,采用unittest.TestSuite()。
PyUnit使用TestRunner类作为测试用例的基本执行环境,来驱动整个单元测试过程。Python开发人员在进行单元测试时一般不直接使用TestRunner类,而是使用其子类TextTestRunner来完成测试。
# 构造测试集 suite = unittest.TestSuite() suite.addTest(RanzhiTest("test_login")) suite.addTest(RanzhiTest("test_ranzhi")) # 执行测试 runner = unittest.TextTestRunner() runner.run(suite)
以下代码为登录“然之系统”,进入添加用户,循环添加用户并检测添加成功,再退出的过程。以下程序分别为主程序,模块化程序,执行程序,CSV文件
import csv import unittest from time import sleep from selenium import webdriver # 模块化代码后引用需导入代码模块 from ranzhi_lib import RanzhiLib class Ranzhi(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.lib = RanzhiLib(self.driver) # 主函数 def test_ranzhi(self): # 读取CSV文件到user_list字典类型变量中 user_list = csv.reader(open("list_to_user.csv", "r")) # 遍历整个user_list for user in user_list: sleep(2) self.lib.logn_in('admin', 'admin') sleep(2) # 断言 self.assertEqual("http://localhost:8080/ranzhi/www/sys/index.html", self.driver.current_url, '登录跳转失败') # 读取一行csv,并分别赋值到user_to_add 中 user_to_add = {'account': user[0], 'realname': user[1], 'gender': user[2], 'dept': user[3], 'role': user[4], 'password': user[5], 'email': user[0] + user[6]} # 点击后台管理 self.lib.click_admin_app() # 进入嵌套 self.lib.driver.switch_to.frame('iframe-superadmin') sleep(2) # 点击添加用户 self.lib.click_add_user() # 添加用户 self.lib.add_user(user_to_add) # 退出嵌套 self.driver.switch_to.default_content() sleep(1) # 退出 self.lib.logn_out() sleep(2) # 用新账号登录 self.lib.logn_in(user_to_add['account'], user_to_add['password']) sleep(2) self.lib.logn_out() sleep(2) def tearDown(self): self.driver.quit()