python 单元测试框架 ---unittest(二)

本贴最后更新于 524 天前,其中的信息可能已经时移俗易
框架执行入口
九、用例收集
1.测试用例为维度
# 创建测试套件
suite = unittest.TestSuite()

# 添加指定的测试用例
suite.addTest(TestDemo("test_02"))

# 创建执行器
runner = unittest.TextTestRunner()

# 运行
runner.run(suite)

2.测试类为维度
# 添加指定的测试类
suite.addTest(unittest.makeSuite(TestDemo))

3.模块为维度
# 拿到的直接是测试套件 start_dir(测试文件目录), pattern='test*.py'(测试用例文件名称。默认是test开头的py文件)
cas_dir = os.path.dirname(__file__)  # 获取当前文件的目录
suite = unittest.defaultTestLoader.discover(start_dir=cas_dir,pattern="demo0*.py")  # * 匹配所有字符

4.测试报告
①BeautifulReport
pip install BeautifulReport # 安装
from BeautifulReport import BeautifulReport
br = BeautifulReport(suite = suite)
br.report(description="测试报告描述",filename="resport.html")

②unittestreport
pip install unittestreport
from unittestreport import TestRunner
runner = TestRunner(
        suite = suite,
        filename="report02.html",
        report_dir="./reports",
        title='测试报告',
        tester='杨乐元',
        desc="打印机项目测试生成的报告",
        templates=1
)
runner.run()

③发邮件
runner.send_email(
        host="smtp.qq.com",
        port=465,
        user="470573828@qq.com",
        password="sdfsdfsfdsfds",
        to_addrs="1332231609@qq.com"
)

数据驱动
一、什么是数据驱动
1.业务流程是固定的,变换的是业务中的数据
2.使用场景:业务流程是一样的,只是请求参数不一样

二、安装ddt
pip install ddt
1.ddt数据驱动
import unittest
from ddt import ddt, data
test_cases = [{"api": "/api/login", "user": "admin"}, {"api": "/api/login", "user": "test"}]
@ddt
class TestDemo(unittest.TestCase):

        @data(*test_cases)
        def test_01(self, data):
                print("数据查看", data)

if __name__ == '__main__':
        unittest.main()
  
2.unittestreport数据驱动
import unittest
from unittestreport import ddt, list_data

test_cases = [{"api": "/api/login", "user": "admin"}, {"api": "/api/login", "user": "test"}]

@ddt
class TestDemo(unittest.TestCase):

        @list_data(test_cases)
        def test_01(self, data):
                print("unittestreport数据查看", data)

if __name__ == '__main__':
        unittest.main()
  
一、配置文件(通过配置文件软编码)
import requests

def login(user, password):
        data = {"user":user, "password":password}
        res = requests.post(url="/login",json=data)
        return res.json()
二、配置文件类型
1.ini配置文件

2.yaml配置文件

3.python文件(最佳选择Django)

三、ini配置文件(字典套字典)
[user]  #section
user_name = admin    #key value
pass_word = 123456
{"user":{"user_name":"admin",
        "pass_word":"123456"},
"host":{"host":"www.baidu.com"}}

特点:
1.[user]不可重复
2.[user]里面的key不可以重复
3.默认数据类型字符串

操作步骤:
from configparser import ConfigParser
conf = ConfigParser()
# 读取ini文件
conf.read(filenames="test.ini",encoding="utf-8")
# 获取section[user]
res1 = conf.sections()
print("ini配置文件数据",res1)
# 获取section的所有值
res2 = conf.options(section="user")
print(res2)
# 获取某个section的具体值
val =conf.get(section="user",option="user_name")
print(val)
回帖
请输入回帖内容 ...