文章目录
1.任务目标
我们之前的教程学会了,读取csv文件的方法,还有数据驱动,然后我们下面的内容讲解一下自动化的高级,这一小节我们学习一下自动化测试discover方法的使用
2.discover方法
使用unittest进行测试的话,如果是需要实现上百个测试用例,把它们全部写在一个test.py文件中,文件会越来越臃肿,后期维护页麻烦。此时可以将这些用例按照测试功能进行拆分,分散到不同的测试文件中。这时候我们可以通过discover方法来执行所有的测试用例。
discover使用格式:discover(start_dir,pattern=‘test*.py’)
找到指定目录下所有测试模块,并可递归查到子目录下的测试模块,只有匹配到文件名才能被加载。如果启动的不是顶层目录,那么顶层目录必须单独指定。
start_dir:要测试的模块名或测试用例目录
pattern=‘test*.py’:表示用例文件名的匹配原则。此处匹配文件名以“test”开头的“.py”类型的文件,星号“*”表示任意多个字符
3.任务实操
3.1任务目录
3.2任务代码
读取csv文件代码test02
import csv def rend(): ps = r"E:\rest.csv" stem = open(ps, "r") tat = csv.reader(stem) list = [] i = 0 for row in tat: if i != 0: list.append(row) i = i + 1 return list if __name__ == '__main__': arr = rend() for row in arr: print(row)
test04包下驱动代码
import time from selenium import webdriver import ddt import unittest from test02 import rend @ddt.ddt class test_ds(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() self.driver.maximize_window() self.driver.implicitly_wait(3) stem = rend() @ddt.data(*stem) def test_kd(self, list): try: self.driver.get("http://test.pandabrother.cn/gpracticef/my/login.html") self.driver.find_element_by_class_name('form-control').send_keys("liufengning") self.driver.find_element_by_id('input-password').send_keys("123456") self.driver.find_element_by_xpath('/html/body/div/div/div[1]/section/form/div[3]/button').click() self.driver.find_element_by_xpath('//*[@id="sidebar-menu"]/div/ul/li/a').click() self.driver.find_element_by_xpath('//*[@id="sidebar-menu"]/div/ul/li/ul/li[2]/a').click() self.driver.find_element_by_xpath( '/html/body/div[1]/div/div[3]/div/div[3]/div[2]/div/form/button[2]').click() self.driver.find_element_by_xpath('//*[@id="input-name"]').send_keys(list[0]) self.driver.find_element_by_xpath('//*[@id="btn-save"]').click() emte = self.driver.find_element_by_id('out-tip').text self.assertEqual(emte, list[1]) print("用例执行成功") except: print("用例执行失败") times = time.strftime("%Y-%m-%d-%H-%M-%S") self.driver.get_screenshot_as_file(r"E:\," + times + ".png") def tearDown(self): self.driver.quit() if __name__ == '__main__': unittest.main()
discover方法代码
import unittest #获取test04包下的代码 test_dir = "./text04" #使用discover方法执行 ds = unittest.defaultTestLoader.discover(test_dir, pattern="test04.py") if __name__ == '__main__': ruun = unittest.TextTestRunner() ruun.run(ds)
3.3效果如下
小结
为什么要学习discover,因为我们再做一个很大的项目时候,写的程序很多,执行时候特别乱,我们用discover方法后执行很有条理,非常清晰,代码有点多,大家一定要多多练习。