写测试案例的过程中,我们可以需要写多个py文件,一个一个的去执行再生成报告,不仅麻烦而且多份报告还要重新去整合,浪费时间,有没有一种方法可以把我们写的所有py文件同时执行呢?其实这种方法类似之前的测试多个类的方法。
我们之前写了一个针对百度搜索的测试案例baidu.py,在这个文件的目录下,我们再写一个搜狗搜索的测试案例sougou.py。和百度搜索的代码类似,代码如下:
# -*- coding: utf-8 -*-
from selenium import webdriver
import HTMLTestRunner,time,unittest
class Sougou(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(30)
self.base_url = "https://www.sogou.com"
self.verificationErrors = []
self.accept_next_alert = True
def tearDown(self):
self.driver.quit()
self.assertEqual([],self.verificationErrors)
def test_sougou_search(self):
driver = self.driver
driver.get(self.base_url)
driver.find_element_by_xpath('//*[@id="query"]').send_keys('selenium')
driver.find_element_by_xpath('//*[@id="stb"]').click()
time.sleep(2)
driver.close()
if __name__ == '__main__':
testunit = unittest.TestSuite()
testunit.addTest(Sougou('test_sougou_search'))
filename = '/Users/svenweng/Desktop/result-sougou.html'
fp = file(filename,'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream = fp,
title = 'Sougou Test Report',
description = 'Sougou testcase'
)
runner.run(testunit)
执行上面的代码显示的结果就是在谷歌浏览器中搜索selenium,然后关闭浏览器,生成测试报告。
这里就是本次要介绍的功能,没有新的知识点,只是把原来写过的文件导入同时执行测试。
新建一个all_tests.py文件,然后把我们需要测试的文件导入。
# -*- coding: utf-8 -*-
import unittest,HTMLTestRunner
import baidu,sougou
导入我们的测试文件后,使用下面的方法吧测试案例添加到执行集中。
testunit = unittest.TestSuite()
testunit.addTest(unittest.makeSuite(baidu.Baidu))
testunit.addTest(unittest.makeSuite(sougou.Sougou))
x = testunit.countTestCases()
testunit.countTestCases()这个功能表示在TestSuite一共放了几条测试案例。
然后我们再引入测试报告的内容,代码如下:
filename = '/Users/svenweng/Desktop/result.html'
fp = file(filename,'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream = fp,
title = 'Search Test Report',
description = u'本次测试的案例数为:' + str(x) + u'条'
)
runner.run(testunit)
这样我们就可以一次性跑多个测试案例,同时也只会生成一份测试报告。三个文件必须要放在同一个文件夹下,如果不是在同一个文件夹,import的时候需要注意导入的路径,源码如下:
# -*- coding: utf-8 -*-
import unittest,HTMLTestRunner
import baidu,sougou
testunit = unittest.TestSuite()
testunit.addTest(unittest.makeSuite(baidu.Baidu))
testunit.addTest(unittest.makeSuite(sougou.Sougou))
x = testunit.countTestCases()
filename = '/Users/svenweng/Desktop/result.html'
fp = file(filename,'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream = fp,
title = 'Search Test Report',
description = u'本次测试的案例数为:' + str(x) + u'条'
)
runner.run(testunit)