前言

我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了。加载用例后,用unittest里面的TextTestRunner类的run方法去一次执行多个脚本的用例。

一、新建测试项目

1.pycharm左上角File>New Projetc>Pure Python,在location位置命名一个测试工程的名称:Mytest,然后保存;

2.右键选中刚才新建的工程>New>Python Package>新建一个unitest的python包,注意是unitest,不是unittest

3.右键选中步骤2中创建的unitest包,创建一个case包

4.重复步骤3,在case包下面,依次创建baidu和wangyi包

5.分别在baidu和wangyi包下面创建2个测试用例脚本,testA,testB,testC,testD是我们写用例的脚本。

创建完后的层次结构如下图:

6.testA脚本创建完后,打开文件,写入用例,其它三个测试用例的内容类似

脚本内容为:

 1 # coding:utf-8
2
3 import unittest
4
5 # print help(unitest)
6 class testA(unittest.TestCase):
7
8 def setUp(self):
9 print "testA------setUp"
10 pass
11
12 def tearDown(self):
13 print "testA------tearDown"
14 pass
15
16 def test_A001(self):
17 print ("test_A001")
18
19 def test_A002(self):
20 print ("test_A002")

7.在unitest下面创建一个脚本run_all_case.py,接下来用这个脚本去批量执行所有的用例。

二、discover加载测试用例

1.discover方法里面有三个参数:

-case_dir:这个是待执行用例的目录。

-pattern:这个是匹配脚本名称的规则,test*.py意思是匹配test开头的所有脚本。

-top_level_dir:这个是顶层目录的名称,一般默认等于None就行了。

2.discover加载到的用例是一个list集合,需要重新写入到一个list对象testcase里,这样就可以用unittest里面的TextTestRunner这里类的run方法去执行。

3.运行结果如下:

1 C:\Python27\python.exe C:/Users/zhangxiaoding/PycharmProjects/Mytest/unitest/run_all_case.py
2 C:\Users\zhangxiaoding\PycharmProjects\Mytest\unitest\report
3 C:\Users\zhangxiaoding\PycharmProjects\Mytest\unitest\report
4 <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.baidu.testA.testA testMethod=test_A001>, <case.baidu.testA.testA testMethod=test_A002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.baidu.testB.testB testMethod=test_B001>, <case.baidu.testB.testB testMethod=test_B002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.wangyi.testC.testC testMethod=test_C001>, <case.wangyi.testC.testC testMethod=test_C002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.wangyi.testD.testD testMethod=test_D001>, <case.wangyi.testD.testD testMethod=test_D002>]>]>]>
5 ........
6 Time Elapsed: 0:00:00.039000
7
8 Process finished with exit code 0

其中discover加载到的所有测试用例如下:

1 <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.baidu.testA.testA testMethod=test_A001>, <case.baidu.testA.testA testMethod=test_A002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.baidu.testB.testB testMethod=test_B001>, <case.baidu.testB.testB testMethod=test_B002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.wangyi.testC.testC testMethod=test_C001>, <case.wangyi.testC.testC testMethod=test_C002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.wangyi.testD.testD testMethod=test_D001>, <case.wangyi.testD.testD testMethod=test_D002>]>]>]>

4.运行结果后会在unitest下创建一个report文件夹(如果没有该文件夹则创建,否则不创建),里面存放本次运行结束后的测试报告

5.打开测试报告,如下图

最新文章

  1. [python] File path and system path
  2. JavaScript 实现彩票中随机数组的获取
  3. jQuery常用方法验证
  4. [html]兼容 IE6 IE7 的简单网页框架
  5. JavaScript:通过id来进行元素的取得
  6. pthread的线程安全性
  7. WPF以Clickonce方式发布后使用管理员身份运行
  8. Server-Side Access Control
  9. 【行为型】Iterator模式
  10. C++之static
  11. URAL 1306 - Sequence Median 小内存求中位数
  12. Node.js笔记2
  13. C++ STL它vector详细解释
  14. 关于vue-axios的url地址统一设置
  15. python从入门到实践-5章if语句
  16. jenkins使用笔记
  17. 中国剩余定理 (POJ 1006)
  18. Python进程池举例
  19. 位运算卷积-FWT
  20. React icon bak

热门文章

  1. GO语言面向对象06---面向对象练习01
  2. 『动善时』JMeter基础 — 37、将JMeter测试结果写入Excel
  3. GEMM与AutoKernel算子优化
  4. 旷视MegEngine核心技术升级
  5. 广播 (broadcasting)
  6. TensorRT 数据和表格示例
  7. xshell远程连接另一台电脑的数据库,启动图形失败
  8. Bean初始化操作initMethod、@PostConstruct和InitializingBean
  9. STP协议与MSTP协议
  10. k8s通过ceph-csi接入存储的概要分析