使用Pytest创建一个Python测试自动化项目

  

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)-CSDN博客跳槽涨薪的朋友们有福了,今天给大家推荐一个软件测试面试的刷题小程序。​编辑https://blog.csdn.net/weixin_54696666/article/details/139783730?spm=1001.2014.3001.5501icon-default.png?t=N7T8https://blog.csdn.net/weixin_54696666/article/details/139783730?spm=1001.2014.3001.5501

 

为什么选择Python?

Python是当前最流行的编程语言之一。它为Web后端,数据科学笔记本,sysadmin脚本等提供支持。它的语法简洁,易读且优雅–非常适合初学者和专家。您可以想象的一切都只是一个导入。自然地,Python还是测试自动化的最好的语言。它的简洁性使测试人员可以将更多的精力放在测试上,而不必在代码上。未完成大量编程工作的测试人员往往比其他语言(如Java或C#)学习Python的速度更快。Python非常适合启动测试!

什么是pytest

任何功能测试自动化项目的核心都是“核心”测试框架。该框架处理测试用例结构,测试执行以及通过/失败结果报告。这是可以添加额外的程序包和代码(例如Selenium WebDriver)的基础。

pytest是Python最好的测试框架之一。它简单,可扩展且具有Python风格。测试用例是作为函数而不是类编写的。测试断言失败将与实际值一起报告。插件可以添加代码覆盖率,漂亮的报告和并行执行。pytest也可以与Django和Flask等其他框架集成。根据2018年Python开发人员调查,它也是最受欢迎的Python测试框架。

入门

让我们创建我们的Python测试项目!如果您尚未这样做,请下载并在您的计算机上安装Python 3。然后,为项目创建一个新目录:

 
  1. $ mkdir python-webui-testing

  2. $ cd python-webui-testing

每当我创建一个新的Python项目时,都会为其依赖项创建一个虚拟环境。这样,同一台计算机上的项目就不会有相互冲突的软件包版本。我使用pipenv  是因为它简化了工作流程。要全局安装pipenv,请运行:

$ pip install pipenv

然后,为新项目安装pytest:

$ pipenv install pytest --dev

Pipenv将向您的项目添加两个新文件:  Pipfile和  。 Pipfile指定了项目的要求,而  Pipfile.lock “锁定”了项目将使用的显式版本。该命令中的“ –dev”选项表示pytest软件包将仅用于开发,而不用于部署。Pipfile.lock

第一次测试

按照惯例,大多数项目会将所有测试放在一个   目录下。让我们遵循以下约定:tests/

 
  1. $ mkdir tests

  2. $ cd tests

创建一个 为我们的第一个测试命名的Python模块,并添加以下代码:test_math.py

 
  1. def test_addition():

  2. assert 1 + 1 == 2

使用pytest编写的测试通常不需要太多代码。这两行是功能齐全的测试用例!测试用例是作为函数而不是类编写的。像这样的基本测试不需要导入。使用Python的本机  assert 语句代替自定义断言调用。

运行测试

让我们运行我们的新测试。将目录更改回项目根目录,并调用pytest模块:

 
  1. $ cd ..

  2. $ pipenv run python -m pytest

  3. ============================= test session starts ==============================

  4. platform darwin -- Python 3.7.3, pytest-4.5.0, py-1.8.0, pluggy-0.12.0

  5. rootdir: /Users/andylpk247/Programming/automation-panda/python-webui-testing

  6. collected 1 item

  7. tests/test_math.py . [100%]

  8. =========================== 1 passed in 0.02 seconds ===========================

我们的第一个测试通过了!

pytest是如何发现我们的测试的?按名称:pytest将搜索名为 的模块中命名的  测试函数  。有趣的是,pytest不需要任何测试目录中的文件。test_*test_*.py__init__.py

测试失败

如果测试失败,会发生什么?让我们添加另一个带有错误的测试来找出:

 
  1. def test_subtraction():

  2. diff = 1 - 1

  3. assert diff == 0

让我们重新运行这些测试:

 
  1. $ pipenv run python -m pytest

  2. ============================= test session starts ==============================

  3. platform darwin -- Python 3.7.3, pytest-4.5.0, py-1.8.0, pluggy-0.12.0

  4. rootdir: /Users/andylpk247/Programming/automation-panda/python-webui-testing

  5. collected 2 items

  6. tests/test_math.py .. [100%]

  7. =========================== 2 passed in 0.02 seconds ===========================

我们回到了正轨。

参数化测试

如果我们要使用多个输入组合来运行相同的测试过程,该怎么办?pytest有一个装饰器!让我们编写一个新的参数化输入乘法测试:

 
  1. import pytest

  2. @pytest.mark.parametrize(

  3. "a,b,expected",

  4. [(0, 5, 0), (1, 5, 5), (2, 5, 10), (-3, 5, -15), (-4, -5, 20)])

  5. def test_multiplication(a, b, expected):

  6. assert a * b == expected

这次,pytest 必须导入模块。在   装饰将取代的输入元组的测试功能参数,运行每一次输入元组中的测试功能。再次运行测试将显示更多的通过点:@pytest.mark.parametrize

 
  1. $ pipenv run python -m pytest

  2. ============================= test session starts ==============================

  3. platform darwin -- Python 3.7.3, pytest-4.5.0, py-1.8.0, pluggy-0.12.0

  4. rootdir: /Users/andylpk247/Programming/automation-panda/python-webui-testing

  5. collected 7 items

  6. tests/test_math.py ....... [100%]

  7. =========================== 7 passed in 0.03 seconds ===========================

参数是进行数据驱动测试的好方法。

验证异常

pytest将未处理的异常视为测试失败。实际上,该  assert 语句仅引发异常以注册失败。如果我们要验证是否正确引发了异常该怎么办?使用   与期望的异常类型,如下所示:pytest.raises

 
  1. def test_divide_by_zero():

  2. with pytest.raises(ZeroDivisionError):

  3. 1 / 0

重新运行测试以确保一切正常:

 
  1. $ pipenv run python -m pytest

  2. ============================= test session starts ==============================

  3. platform darwin -- Python 3.7.3, pytest-4.5.0, py-1.8.0, pluggy-0.12.0

  4. rootdir: /Users/andylpk247/Programming/automation-panda/python-webui-testing

  5. collected 8 items

  6. tests/test_math.py ........ [100%]

  7. =========================== 8 passed in 0.04 seconds ===========================


Selenium Firefox驱动程序:使用Firefox浏览器自动进行测试

WebDriverIO教程:处理Selenium中的警报和覆盖

TeamCity VS Jenkins:选择正确的CI / CD工具

如何在Selenium WebDriver中处理Web表?

Python中的正则表达式(二)

Python中的正则表达式和示例

Python中的文件处理

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值