Bootstrap

pytest自动化测试(超详细整理)

Pytest作为广泛使用的Python测试框架之一,可以用于单元测试、功能测试、性能测试等场合。自动化测试是功能测试的一种形式,可以使用Pytest编写并管理自动化测试用例,再执行相应的自动化测试。

功能测试通常包括接口测试和Web测试两种类型,任何一个测试类型都可以通过Pytest框架来实现。本文以接口测试为例,讲解如何使用Pytest进行自动化测试。

如果想要进行Web自动化测试,只需要将代码中涉及接口测试API改为适用于Web自动化测试的API即可,而整体框架与执行方式则基本一致。

1. 编写测试用例

1)编写简单的测试用例

假设我们想要测试百度首页API接口,用户发出的请求是否合法,并检查响应文本是否包含字符串、“百度一下”。

代码实例:

 
  1. import requests

  2. def test_baidu():

  3. # 发送API请求

  4. response = requests.get('https://www.baidu.com')

  5. # 判断响应状态码及响应文本是否符合预期结果。

  6. assert response.status_code == 200

  7. assert "百度一下" in response.text

上述代码中定义了`test_baidu()`作为测试函数名,它是一个基本测试用例。在这个示例用例中,代码会向API发送GET请求,并断言响应的状态码为200,且响应文本中包含“百度一下”这几个关键字。

2)编写参数化测试用例

在实际测试中通常需要对多组数据进行测试。这时参数化测试用例就派上用场了。它可以轻松地对多组数据进行测试,避免手动重复编写测试用例。

代码实例:

 
  1. import requests

  2. import pytest

  3. # 声明数据

  4. data = [

  5. {'url': 'https://www.baidu.com', 'expected': '百度一下'},

  6. {'url': 'https://cn.bing.com/', 'expected': 'bing'}

  7. ]

  8. @pytest.mark.parametrize('case', data)

  9. def test_web(case):

  10. url = case['url']

  11. expected = case['expected']

  12. # 发送API请求,并断言响应的状态码为200,并检查响应文本是否符合预期结果

  13. response = requests.get(url)

  14. assert response.status_code == 200

  15. assert expected in response.text

上述代码中使用`pytest.mark.parametrize`来实现参数化。其中,“case”是参数名称。“data”列表内包含了多组测试数据。通过for循环遍历每一组测试数据,并参考预置的策略执行具体的测试任务。

2. 运行测试用例

用例编写完成后,一定要进行自测,保证测试用例测试结果的准确性和一致性,测试用例本身没有问题,方可接入自动化测试。

Pytest来执行测试用例非常简单,只需要在命令行中输入`pytest`即可

3. 查看测试结果

所有测试用例执行完成后,pytest会给出测试结果,若用例都执行通过,测试结果会显示如下信息:

若有测试用例未能通过,执行结果会给出失败消息和失败原因,测试人员需要根据测试结果,找到执行失败的测试用例,并对其进行分析,判断是测试用例本身的问题,还是发现了程序的bug。

使用pytest做自动化测试,编写测试用例,需要遵循最佳的代码规范,并且考虑到各种边界情况和异常情况。同时,善于使用参数化和其他高级功能,提高自动化测试的可靠性、可维护性,保证自动化测试的顺畅执行。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

;