【unittest】2、unittest重要组件之TaseCase

1、TestCase用法

import unittest


class EcshopLogin(unittest.TestCase):

    def test01_baili(self):
        print('测试百里')

    def test02_weiwei(self):
        print('测试微微')

2、执行方式

  • 命令执行
python -m unittest 模块名.类名.方法名
 
    • 常见参数:
      • -v:更详细的输出结果
        • 命令:python -m unittest -v 模块名.类名.方法名
      • -k:匹配模式
        • 通配符匹配
python -m unittest -v 模块名.类名.方法名 -k *_匹配字段
        • 字符串匹配
python -m unittest -v 模块名.类名.方法名 -k  字符串
  • 模块方式运行
    • 执行命令
      • 或者python 模块名.py
        • 举例:python ecshop_login.py
    • main源码解析:
      • module='__main__':测试用例所在的路径__main__表示当前模块
      • defaultTest=None:待测用例的名称,默认是所有
      • argv=None:接收外部的参数
      • testRunner=None:测试运行器,默认是TexyTestRunner
      • testLoader=loader.defaultTestLoader:指定使用默认的测试用例加载器
      • exit=True:是否在测试完成后结束Python程序
      • verbosity=1:类似于命令行-v参数;默认为1
        • 0,1,2其中2:为详细信息
      • failfast=None:当失败的时候,是否终止测试
      • catchbreak=None:是否捕获复制
      • warnings=None:是否显示告警信息
  • 套件的方式运行
import unittest

class TestExec(unittest.TestCase):

    def test_01(self):
        print('test_01')

    def test_03(self):
        print('test_03')

    def test_02(self):
        print('test_02')


if __name__ == '__main__':
    # 初始化测试套件
    suite = unittest.TestSuite()
    # addTest(ClassName("MethodName"))
    suite.addTest(TestExec('test_01'))
    unittest.main(defaultTest="suite")
    • 执行结果如下:
  • 执行器的方式去执行
import unittest


class TestExec(unittest.TestCase):

    def test_01(self):
        print('test_01')

    def test_03(self):
        print('test_03')

    def test_02(self):
        print('test_02')


if __name__ == '__main__':
    # 初始化测试套件
    suite = unittest.TestSuite()
    testcases = [TestExec('test_01'), TestExec('test_02')]
    suite.addTests(testcases)
    # unittest.main(defaultTest="suite")
    unittest.TextTestRunner(verbosity=2).run(suite)
    • 执行结果
  • 使用加载器去发现测试用例,并执行
# -*- coding: utf-8 -*-
import os
import unittest


class TestExec(unittest.TestCase):

    def test_01(self):
        print('test_01')

    def test_03(self):
        print('test_03')

    def test_02(self):
        print('test_02')


if __name__ == '__main__':
    # 第一种写法:
    # .discover()自动搜索指定目录下指定开头的.py文件,并将查找到的测试用例组装到测试套件
    # suite = unittest.TestLoader().discover(os.getcwd(), "testcase03.py")
    # unittest.TextTestRunner(verbosity=2).run(suite)
    
    # 还可以这么写
    suite = unittest.TestSuite()
    testcases = unittest.TestLoader().discover(os.getcwd(), "testcase03.py")
    suite.addTests(testcases)
    unittest.TextTestRunner(verbosity=2).run(suite)
 

3、执行结果

  • .:成功
  • F:失败
  • E:错误
  • S:跳过
  • x:标记预期失败
  • u:意想不到的成功

4、用例执行顺序

  • 按ASCII码的规则:[0-9 A-Z a-z]
  • 举例:
import unittest


class TestExec(unittest.TestCase):

    def test_01(self):
        print('test_01')

    def test_03(self):
        print('test_03')

    def test_02(self):
        print('test_02')
    • 执行结果:
posted @ 2022-04-22 15:36  郭祺迦  阅读(84)  评论(0)    收藏  举报