(selenium 六)unittest通过测试套件组织用例 (2)
2016-06-02 14:11
627 查看
上一边文章中,all_tests.py文件与测试用例都位于同一文件见。下面通过在测试用例文件夹下添加__init__.py形成包文件,然后再all_test.py中添加PATH路径导入包即可。具体操作如下:
1、在test_case文件夹下新建__init__.py文件,
2、将all_test.py移至test_case文件夹所在目录,
解决方案:用例文件组装一数组,用for来遍历
新增allcase_list.py
all_tests.py做相应修改
需要在用例当前目录下打开__init__.py 文件,添加“import aaa”;
还需要打开allcase_list.py 文件,在alltestnames 数组中添加aaa.calss_name 。然后,用例才能添加到测试套件中执行。
原因:引入了HTMLTestRunner测试报告,需要用runner.run(testunit)(否则可以直接用unittest.main()来执行)
解决方案:TestLoader 下的discover()方法来实现,以通过文件的名称来判断是否为测试用例文件,如为用例文件则自动添加到测试套件中
1、删除__init__.py、allcase_list.py文件
2、重命名待测测试用例,命名规则符合discover函数规则
3、修改all_tests.py
语法点:
TestLoader:测试用例加载器,其包括多个加载测试用例的方法。返回一个测试套件。
discover(start_dir,pattern='test*.py',top_level_dir=None)
找到指定目录下所有测试模块,并可递归查到子目录下的测试模块,只有匹配到文件名才能被加载。
如果启动的不是顶层目录,那么顶层目录必须要单独指定。
start_dir :要测试的模块名或测试用例目录。
pattern='test*.py' :表示用例文件名的匹配原则。星号“*”表示任意多个字符。
1、在test_case文件夹下新建__init__.py文件,
import baidu import youdao
2、将all_test.py移至test_case文件夹所在目录,
#coding = utf-8 import unittest #把test_case 目录添加到path 下,这里用的相对路径 import sys sys.path.append(r"F:\技术提高学习\自动化框架\web自动化\实例\实例6.1_unittest通过测试套件组织用例\test_case") #from test_case import baidu, youdao 若__init.py内容为空,需手动导入模块 from test_case import * import HTMLTestRunner import time testunit = unittest.TestSuite() #将测试用例加入到测试容器(套件)中 testunit.addTest(unittest.makeSuite(baidu.Baidu)) #<span style="color:#FF0000;">弊端:随着用例的增加,测试套件可能要罗列几百上千条用例,不便于管理</span> testunit.addTest(unittest.makeSuite(youdao.Youdao))
解决方案:用例文件组装一数组,用for来遍历
#coding = utf-8 import unittest import sys sys.path.append(r"F:\技术提高学习\自动化框架\web自动化\实例\实例6.1_unittest通过测试套件组织用例\test_case") from test_case import * import HTMLTestRunner import time #将用例组装数组 alltestnames = [baidu.Baidu, youdao.Youdao] #<span style="color:#33CC00;"><span style="color:#3333FF;">弊端:每次新增或删除用例时,都要改动该文件</span></span> #创建测试套件 testunit = unittest.TestSuite() for test in alltestnames: testunit.addTest(unittest.makeSuite(test))解决方案:把alltestnames 数组放到一个单独的文件中,创建allcase_list.py 文件,与all_tests.py 保持同级目录
新增allcase_list.py
#coding = utf-8 import sys sys.path.append(r"F:\技术提高学习\自动化框架\web自动化\实例\实例6.1_unittest通过测试套件组织用例\test_case") from test_case import * #用例文件列表 def caselist(): alltestnames = [ baidu.Baidu, youdao.Youdao ] print('success read case list!') return alltestnames
all_tests.py做相应修改
import allcase_list #获取数组方法 alltestnames = allcase_list.caselist()问题:如新建一条用例aaa.py,仍需要改动两个文件__init__.py、allcase_list.py
需要在用例当前目录下打开__init__.py 文件,添加“import aaa”;
还需要打开allcase_list.py 文件,在alltestnames 数组中添加aaa.calss_name 。然后,用例才能添加到测试套件中执行。
原因:引入了HTMLTestRunner测试报告,需要用runner.run(testunit)(否则可以直接用unittest.main()来执行)
解决方案:TestLoader 下的discover()方法来实现,以通过文件的名称来判断是否为测试用例文件,如为用例文件则自动添加到测试套件中
1、删除__init__.py、allcase_list.py文件
2、重命名待测测试用例,命名规则符合discover函数规则
3、修改all_tests.py
#coding = utf-8 import unittest import HTMLTestRunner import time, os listcasedir = r"F:\技术提高学习\自动化框架\web自动化\实例\实例6.2_unittest通过testloader加载用例\test_case" def creatsuitel(): testunit = unittest.TestSuite() #discover方法定义 discover = unittest.defaultTestLoader.discover(listcasedir, pattern ='start*.py', top_level_dir = None) #discover 方法筛选出来的用例,循环添加到测试套件中 for test_suite in discover: for test_case in test_suite: testunit.addTests(test_case) print(testunit) return testunit alltestnames = creatsuitel() now = time.strftime("%Y-%m-%M-%H_%M_%S",time.localtime(time.time())) filename = r"F:\技术提高学习\自动化框架\web自动化\实例\实例6.2_unittest通过testloader加载用例\{0}result.html".format(now) print(filename) fp = open(filename, 'wb') #执行测试用例 runner = HTMLTestRunner.HTMLTestRunner(stream = fp, title = '百度搜索测试报告', description = '测试执行情况') runner.run(alltestnames)
语法点:
TestLoader:测试用例加载器,其包括多个加载测试用例的方法。返回一个测试套件。
discover(start_dir,pattern='test*.py',top_level_dir=None)
找到指定目录下所有测试模块,并可递归查到子目录下的测试模块,只有匹配到文件名才能被加载。
如果启动的不是顶层目录,那么顶层目录必须要单独指定。
start_dir :要测试的模块名或测试用例目录。
pattern='test*.py' :表示用例文件名的匹配原则。星号“*”表示任意多个字符。
相关文章推荐
- 谈谈Keil 中C51的内存分配与优化
- 地域划分
- JavaScript中的Array 对象(数组对象)
- Gradle Android客户端程序打包(基于gradle 2.10版本验证通过)
- centos 安装 git
- 生成静态Lib+资源buddle注意事项
- 多线程学习(十一)新特征-线程池
- log4j如何设置在控制台打印错误
- assertThat用法
- iOS开发进阶 - 实现类似微信和支付宝的密码输入框(UIKeyInput协议)
- Android开发书籍推荐:从入门到精通系列学习路线书籍介绍
- theme 颜色说明
- iOS开发进阶 - 实现类似微信和支付宝的密码输入框(UIKeyInput协议)
- 让产品经理快速成长的四个习惯
- C# 拼接字符串
- jsp 页面获取xml的内容
- Linux系统调用
- 娱乐
- 关于AngularJS中的ng-class
- Windows环境下,Apache,MySQL等服务以普通用户身份运行具体设置