python discover()没有加载测试用例_三步学会用 python+unittest 搭建简易的接口测试框架(二)...

本文详细介绍了如何使用unittest的discover模式搭建接口测试框架,包括discover模式的参数说明、实例演示、测试用例的组织、跳过测试的方法以及数据驱动测试DDT的应用,旨在帮助读者掌握Python单元测试的实用技巧。
摘要由CSDN通过智能技术生成

三步学会用 python+unittest 搭建简易的接口测试框架续集来咯

目录:

一、discover模式运行

二、例子

三、组织测试用例

四、跳过测试

五、数据驱动 DDT

一、discover模式运行

支持的命令行参数:● -v, --verbose
更详细地输出结果。
● -s, --start-directory directory
开始进行搜索的目录(默认值为当前目录 . )。
● -p, --pattern pattern
用于匹配测试文件的模式(默认为 test*.py )。
● -t, --top-level-directory directory
指定项目的最上层目录(通常为开始时所在目录)。

45b6b0ea93204f2f70778925520f9640.png

二、例子

2b364d7912c6617c548ffdd267416d72.png


这个是文件目录结构1、运行testcases 中所有用例
python -m unittest discover -s testcases -v2、匹配模式运行
只运行 testcases 目录下以 test_ 开头文件
python -m unittest discover -v -s testcases -p test_*.py

1a810fbd5aeac83e68dff818efd628d6.png

三、组织测试用例

1、加载单个测试用例
from testcases.test_003 import TestDemo
from testcases.test004 import Demo4
import unittest

“”"
添加单个测试用例
“”"

def suite():
“”"
定义测试套件
:return:
“”"
s = unittest.TestSuite() # 管理测试套件的类
s.addTest(TestDemo(‘test_01’)) # 添加单个测试用例 TestDemo class名 传入 ‘test_01’ test_01 方法名
s.addTest(Demo4(‘test_02_update_topic’)) # 添加单个测试用例
return s

if name == ‘main’:
runner = unittest.TextTestRunner(verbosity=2) # 创建执行器 设置执行的日志级别为详细日志
# 获取测试套件
s = suite()
# 运行测试套件
runner.run(s)2、 从类中加载多个cases
def suites():
s = unittest.TestSuite() # 实例化测试套件类对象
loader = unittest.TestLoader() # 定义加载器
cases1 = loader.loadTestsFromTestCase(TestDemo) # 加载器加载 TestCase 类中的所有的测试方法
cases2 = loader.loadTestsFromTestCase(Demo4)
s.addTests(cases1) # 所有的测试方法添加到测试套件中 s.addTests(cases2) return s

if name == ‘main’:
runner = unittest.TextTestRunner(verbosity=2)# 创建执行器 设置执行的日志级别为详细日志
# 获取测试套件
# s = suite()
s = suites()
# 运行测试套件
runner.run(s)3、 从module文件中加载
def moduleSuite():
s = unittest.TestSuite()
loader = unittest.TestLoader()
cases = loader.loadTestsFromName(‘testcases.test_00
5’) # 文件路径, 从module中加载所有的TestCase
s.addTests(cases)
return s

if name == ‘main’:
runner = unittest.TextTestRunner(verbosity=2) # 创建执行器 设置执行的日志级别为详细日志
# 获取测试套件
# s = suite()
s = moduleSuite()
# 运行测试套件
runner.run(s)

a4480b208dbad4b830d68f8be89c6f98.png

四、跳过测试

● skip 直接跳过。● skipIf 加上跳过条件。● skipUnless 跳过条件,与if相反。
“”"
test fixture 测试脚手架
“”"
import unittest

class Demo5_1(unittest.TestCase):
“”"
每个测试用例执行之前和之后的操作
测试用例级别: setUp 定义每个用例运行之前的操作 tearDown 定义每个用例运行之后的操作 整个class 级别 setUpClass 运行class 之前 tearDownClass 运行class 之后 """ def setUp(self) -> None: print('运行方法之前') def tearDown(self) -> None: print("运行方法之后执行") @classmethod def setUpClass(cls) -> None: print('运行类里面所有的case 之前') @classmethod def tearDownClass(cls) -> None: print('运行类里面所有的case 之后') def test_run1(self): print("现在开始运行run1") def test_run2(self): print("现在开始运行run2")

class Demo5_2(unittest.TestCase):
def testcase1(self):
assert True
@unittest.skip('跳过此用例') def testcase2(self): assert True @unittest.skipIf(True, 'skipIf') def testcase3(self): assert True @unittest.skipUnless(False,'skipUnless') def testcase4(self): assert True

if name == ‘main’:
unittest.main(verbosity=2)

五、数据驱动 DDT

需要安装ddt 库https://ddt.readthedocs.io/en/latest/example.html

c163630e74edd2b4c3235ad01d934955.png

1、快速入门
@data 将会传入数据
“”"
基本使用方式

“”"
import unittest
from ddt import ddt,data

#在定义类名上面
@ddt 引入ddt 库@ddt
class TestDDT1(unittest.TestCase):
@data(1,2,3,4,5,6) def test_01(self,val): # val 会去取@data中传过来的值 print('hello world',val)

if name == ‘main’:
unittest.main(verbosity=2)

c7393fd4763120b255c0c68e948f716b.png

2、读取数据文件https://github.com/datadriventests/ddt/blob/master/test/data/test_data_dict.json

data/data.json

{
“unsorted_list”: [ 10, 12, 15 ],
“sorted_list”: [ 15, 12, 50 ],
“tuple_data”: [1,2,3]
}
“”"
基本使用方式

“”"
import unittest
from ddt import ddt,file_data

#在定义类名上面
@ddt 引入ddt 库@ddt
class TestDDT1(unittest.TestCase):
@file_data('data/data.json') def test_02(self,value): print(value) assert True

if name == ‘main’:
unittest.main(verbosity=2)
data/data2.json
{
“positive_integer_range”: {
“start”: 0,
“end”: 2,
“value”: 1
},
“negative_integer_range”: {
“start”: -2,
“end”: 0,
“value”: -1
},
“positive_real_range”: {
“start”: 0.0,
“end”: 1.0,
“value”: 0.5
},
“negative_real_range”: {
“start”: -1.0,
“end”: 0.0,
“value”: -0.5
}
}

import unittest
from ddt import ddt,file_data

@ddt
class TestDDT2(unittest.TestCase):
@file_data('data/data2.json') def test_file_data(self,start,end,value): # start,end,value 与数据文件保持一致 print(start,end,value) assert True

if name == ‘main’:
unittest.main(verbosity=2)

339946717b478ecc2cdd5c703a8111fd.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值