【拉勾三期课程贴】python pytest 测试实战(二)

标题

python pytest 测试实战(二)

课程价值

  • 掌握 Pytest Fixture用法及conftest.py用法
  • 了解 Pytest 常用插件
  • 掌握 Allure 安装与用法

大纲

  • Pytest Fixture用法及conftest.py用法
  • Pytest 常用插件
  • Allure用法

时长

90分钟

PPT

https://pdf.ceshiren.com/lg3/python-Pytest测试实战2

脚本编写

conftest.py 用法

  • 查找顺序
    1、测试用例会优先读 取当前模块下的fixture 方法
    2、其次读取当前目录下定义的conftest.py 文件里面定义的fixture方法
    3、如果当前文件或者当前目录没有,才会去项目目录下一层一层往上找。

  • 需要注意

  • conftest.py文件名是不能换的
    • conftest.py与运行的用例要在同一个package下,并且有__init__.py文件
    • 不需要import导入conftest.py,pytest用例会自动查找
    • 所有同目录测试文件运行前都会执行conftest.py文件
    • 全局的配置和前期工作都可以写在这里,放在某个包下,就是这 个包数据共享的地方。

fixture 参数化

  • 代码参照:
@pytest.fixture(params=[('tom',123456),('jerry',654321)],
                ids=['用户tom','用户jerry'])
def login(request):
    return request.param

def test_case1(login):
    print(f"username: {login[0]} ,password:{login[1]}")
    print("case1")

conftest.py 获取数据路径定义

  • 代码参照

# 读取测试数据
def get_datas():
    # 获取测试数据的绝对路径
    mydatapath = os.path.dirname(__file__) + "/datas/calc.yml"
    with open(mydatapath, encoding='utf-8') as f:
        mydatas = yaml.safe_load(f)
        adddatas = mydatas['add']['datas']
        myids = mydatas['add']['myids']
    return [adddatas, myids]


@pytest.fixture(params=get_datas()[0], ids=get_datas()[1])
def get_datas(request):
    return request.param

allure 用法

官方下载:

https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/

  • Allure2 解析过程:
    1. 安装 allure2
    1. Allure help 帮助文档
    1. 生成 allure 测试结果 :pytest —alluredir=./report/
    1. 展示报告:allure serve ./report
    1. 生成最终版本的报告: allure generate ./report
    1. 打开报告 :allure open -h 127.0.0.1 -p 8883 ./report/

作业

  • 作业1:
    • 1、补全计算器(加减乘除)的测试用例
    • 2、创建 Fixture 方法实现执行测试用例前打印【开始计算】,执行测试用例之后打印【计算结束】
    • 3、将 Fixture 方法存放在conftest.py ,设置scope=module
  • 作业2:
    • 1、编写用例顺序:加- 除-减-乘
    • 2、控制测试用例顺序按照【加-减-乘-除】这个顺序执行
    • 3、本地生成测试报告

课后反馈

https://github.com/xiaocaiji945/hogwarts_lyd

作业–report文件是测试报告

https://github.com/shifangxue/Hogwarts_LG3

1 个赞

作业完成的不错。
注意:
1、autouse=True 这个参数不要轻易的加哦, 避免所有的测试用例都会引用这个方法。一旦设置了,这个项目下的所有测试用例都会引用它。
2、测试用例需要再完善。

allure 和 pytest fixture,以及参数化与数据驱动应用的都不错。

待改进点:
1、目录结构可以划分清晰一些。便于后续维护。
2、测试用例设计的异常情况,考虑的有点少,比如 除法里面除数为0的情况。

用例完成的很不错。将不同的类型的用例拆分管理。数据驱动也应用的不错。
试着多应用一些fixture的场景。

与实战一是同一个github仓库,在其基础上进行的变更。
https://github.com/len-zhang/Hogwarts_pytest_zuoye

https://github.com/realtalk1007/hogwarts

老师,这是本次的作业
https://github.com/endeavor-hxs/test_prac

老师,这是实战二的作业
https://github.com/whitemie/mm/tree/master/pytest_test/Homework2

这是pytest第二次作业
https://github.com/Vena-ww/MyPythonTest/tree/master/Python_test1/calculate

https://github.com/zhaoxiaoshan405671811/hogwarts_demo/tree/master/Python_demo/demo_pytest2

https://github.com/z1069867141/hogwarts_lg

  • pytest实战二练习作业

https://github.com/LiJiaLin29/hogwarts

https://github.com/JuliaZxr/hogwarts_lg3_Yuki.git

老师 我不知道fixture参数化 那段代码 如何写多个
现在是重复写了几次来实现

https://github.com/jijiangyongyou/win_happy/tree/master/xuexi_pytest

https://github.com/youthtail/hogwarts_yhh/blob/master/pytest_2

https://github.com/xiaomaolv60/python_practise.git

https://github.com/lh75756/python/tree/master/homework/homework_pytest2