前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytest测试实战|测试地址管理

Pytest测试实战|测试地址管理

作者头像
无涯WuYa
发布2024-05-27 16:26:04
790
发布2024-05-27 16:26:04
举报

Pytest测试实战

The pytest framework makes it easy to write small, readable tests, and can scale to support complex functional testing for applications and libraries. 这段话很好地阐述了Pytest的设计思想与强大的特性,Pytest测试框架有很多优秀的特性,本文章详细的阐述下Pytest测试框架执行中针对被执行的TestCase测试环境地址的管理。

Pytest环境变量管理

在编写的测试用例代码中,测试地址往往与测试代码写在一起,从代码维护的角度而言并不是那么的友好,针对TestCase中的请求地址或者测试地址等,可以使用config配置文件分离到YAML文件中,或者可以使用Pytest测试框架提供的第三方插件分离到Pytest测试框架本身的配置文件中,在Pytest测试框架中可以使用pytest-base-url的插件来分离测试过程中的地址信息,使用的方法有两种,第一种方式是在pytest-base-url中提供了base-url的Fixture函数,只需要在执行测试用例的命令行中带上--base-url指定测试地址就可以了,下面详细的演示下这部分,案例代码如下:

代码语言:javascript
复制
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# author:无涯

import  requests

def test_login(base_url):
  r=requests.post(
    url=base_url+'/login/auth/',
    json={"username":"13484545195","password":"asd888"},
    headers={'content-type':'application/json'})
  assert r.status_code==200

在如上的代码中,发送请求前面的地址使用了Fixture的函数base_url,只需要在执行该测试用例的时候在执行命令中指定base-url的地址,就能够自动的解析到,执行命令具体如下:

代码语言:javascript
复制
pytest -s -v --base-url=http://0.0.0.0:8000  test_url.py

执行后的结果信息如下图所示:

在如上的执行结果输出信息中,可以看到输出了“baseurl: http://0.0.0.0:8000”,这个其实从本质上而言,就是在Pytest测试框架执行的过程中,把测试函数形式参数中的base-url当作一个Fixture的函数,把解析到的地址信息给了Fixture的函数,也就能够获取到对应的值的信息了。

还有第二种方式是把测试地址写在pytest.ini的配置文件中,把测试地址分离到pytest.ini配置文件内容如下。

代码语言:javascript
复制
[pytest]
base_url=http://0.0.0.0:8000

分离到配置文件后,在执行的时候就不需要在执行命令中指定--base-url=地址的命令了,执行命令以及执行后的结果信息如下:

代码语言:javascript
复制
#执行命令
pytest -s -v  test_url.py

#执行后输出的信息:
baseurl: http://0.0.0.0:8000
configfile: pytest.ini

collected 1 item

test_url.py::test_login PASSED

在如上可以看到可以依然获取到pytest.ini配置文件里面的地址信息赋值给baseurl,最后赋值给Fixture的函数base-url。

在实际的企业中,被测环境往往会有多个不同的环境也就意味着被测试的地址会有多个,比如开发环境、测试环境、预发布环境、生产环境等等,针对这种在pytest-base-url结合pytest.ini也是可以实现的,具体实现的思路就是针对不同的环境可以使用不同的pytest.ini配置文件,比如pytest-qa.ini、pytest-dev.ini,为了统一的管理,把配置文件统一存放在config的文件夹下,具体如下图所示。

各个不同环境里面配置文件内容就是分离出来的不同环境的地址,pytest-qa.ini的配置文件内容:

代码语言:javascript
复制
[pytest]
base_url=http://0.0.0.0:8000
代码语言:javascript
复制
这样在执行的时候,只需要在命令后的后面带上“-c”,“-c”后面是配置文件地址,如分别执行测试环境与开发环境的测试用例,执行的命令如下:
代码语言:javascript
复制
#测试环境执行地址
pytest -s -v -c config/pytest-qa.ini  test/test_url.py

#开发环境执行地址
pytest -s -v -c config/pytest-dev.ini  test/test_url.py
代码语言:javascript
复制
代码语言:javascript
复制
执行结果如下图所示。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档