zoukankan      html  css  js  c++  java
  • Python单元测试框架unittest之批量用例管理(discover)

    前言

    我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到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:Python27python.exe C:/Users/zhangxiaoding/PycharmProjects/Mytest/unitest/run_all_case.py
    2 C:UserszhangxiaodingPycharmProjectsMytestunitest
    eport
    3 C:UserszhangxiaodingPycharmProjectsMytestunitest
    eport
    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.打开测试报告,如下图

     

  • 相关阅读:
    常用的清理 Kubernetes 集群命令
    mask彻底禁用systemctl服务
    ansibleplaybook指定role limit
    极速理解设计模式系列:16.迭代器模式(Iterator Pattern)
    极速理解设计模式系列:19.备忘录模式(Memento Pattern)
    极速理解设计模式系列:8.策略模式(Strategy Pattern)
    极速理解设计模式系列:6.适配器模式(Adapter Pattern)
    PostSharp AOP编程:2.PostSharp的OnMethodBoundaryAspect类基本组成
    极速理解设计模式系列:18.访问者模式(Visitor Pattern)
    极速理解设计模式系列:10.抽象工厂模式(Abstract Factory Pattern)
  • 原文地址:https://www.cnblogs.com/muchengnanfeng/p/9566376.html
Copyright © 2011-2022 走看看