目录

pytest自动化测试面试篇

pytest自动化测试[面试篇]

pytest是python的测试框架,它提供了许多功能,

测试运行

组织pytest的测试用例代码 :模块名称以 test _开头,类名以 Test 开头,函数名以 test _开头, 然后用 pytest命令 即可运行测试用例。

  • 可以在 命令行 中,用pytest命令运行
  • 也可以在 代码 中,用pytest.main()运行

api自动化测试实现

  1. 第一步 :通过 代码编写 ,最终需要在测试用例,test_开头的函数中, 对接口进行请求,然后断言

  2. 第二步 :pytest运行时,就可以批量调接口api, 使用**–aluredir**参数,可以 生成allure的测试报告

  3. 第三步 :代码 集成到git和jenkins 中, 代码最后在jenkins里面,运行pytest命令,allure的测试报告存在Jenkins的workspace中

    再结合 Jenkins的allure插件 可以在Jenkins中, 查看历史测试报告 。 最后可以设置Jenkins的 邮件(钉钉)通知 ,发送报告。

具体代码实现

  1. 代码目录下有一个 libs 目录(业务层) , 一个功能模块写成一个py文件。 然后去封装接口,pytest测试用例方法,再调用 libs层封装方法
  2. a【各个模块的请求方法、url 集中存在一个yaml文件中】 b【请求参数,预期值,是放到excel中的】
    • 业务层的业务类 继承了BaseApi基类,也是自己封装的,提供了请求方法——–它可以获取到对应模块的接口的 method 和 URL
    • 测试用例的类中,每个测试方法 那里,首先使用xrld获取到excel文件中对应接口的请求参数。使用 @pytest.mark.parametrize 把数据传给测试用例,进行数据驱动。
  3. 初始化和身份校验
    • pytest它支持写初始化和清除的代码,使用@pytest.fixture()装饰器。参数:scope,参数3:autouse
    • 用例testcase目录, 添加conftest.py, 里面写了整个项目运行前的初始化,进行登录。并且返回了token。 页面类进行实例化时,会传传入token,页面类请求接口时,会自动带上token。
    • 我在 之前公司的实际项目 中,也是初始化进行了登录, 然后把token保存到配置 中—–方式有所不同。

以上pyest部分未提到的一些用法

  1. 测试用例调用初始化方法:
    1. @ pytest.fixture (autouse=True) 、
    2. @pytest.mark.usefixtures(“方法名”) 、
    3. 或直接在test_开头的函数中,直接把 fixture定义的方法名 当成参数传入。
  2. 装饰器 @pytest.mark.repeat(2) 可以重复运行测试用例。
  3. pytest-assume库提供的, pytest.assume() 断言,如果断言失败,会继续执行,直到全部执行完。
  4. 测试用例方法上, 添加@pytest.mark.skipif(True, reason=“跳过原因”) ,可以跳过用例。 (或 @pytest.mark.skip)
  5. pytest命令运行时,可以添加 -k 参数 ,指定某个测试用例py模块,或者测试用例类,或者某个测试用例方法。

allure测试报告

安装allure-pytest

  1. allure.attach() 可以添加更多的日志、截图等。
  2. @allure.epic、@allure.feature、@allure.story、@allure.title, 让用例分层。
  3. 使用with allure.step(),可以添加步骤。 若调用外部方法,也可以使用装饰器@allure.step(),装饰在外部方法上