pytest自动化测试两种执行环境切换的解决方案_pytest两套环境跑自动化

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

modify_properties_url(filename=ENVIRONMENT_PROPERTIES_PATH,
url=p_api_address[“request”][“url”])
elif sys.argv[1] in [f’t{i}’ for i in range(1, 8)]:

测试环境

conf_url.write_value(filename=CONFIGS_FILE_PATH_URL,
data=test_api_address(sys.argv[1][1:]))
modify_properties_url(filename=ENVIRONMENT_PROPERTIES_PATH,
url=test_api_address(sys.argv[1][1:])[“request”][“url”])
else:
case_logger.error(“Please confirm the environmental information.”)
print(“Please confirm the environmental information.”)
raise Exception
except IndexError:

生产环境

conf_url.write_value(filename=CONFIGS_FILE_PATH_URL,
data=formal_api_address)
modify_properties_url(filename=ENVIRONMENT_PROPERTIES_PATH,
url=formal_api_address[“request”][“url”])

这种方式我们需要使用 “python xxx.py -p” 这种方式进行环境切换,然后再执行pytest命令行去执行测试用例,但是这种方法能在pytest的命令行中使用吗?能不能将环境切换的命令行也集成到pytest的命令行中,执行整个自动化项目只使用一条命令行呢?

方法一:Hook方法pytest_addoption注册命令行参数

1、Hook方法注解
  • pytest_addoption:可以让用户注册一个自定义的命令行参数,方便用户将数据传递给 pytest
  • 这个 Hook 方法一般和内置 fixture pytestconfig 配合使用
  • pytest_addoption 注册命令行参数,pytestconfig 通过配置对象读取参数的值

2、使用方法

1.一般编写到conftest.py文件中

2.定义pytest_addoption方法注册pytest命令行参数,函数名和参数保持一致

def pytest_addoption(parser):
“”“注册自定义参数 env 到配置对象”“”
parser.addoption(“–env”, action=“store”,
default=“https://www.cnblogs.com/”,
help=“将命令行参数 ’–env’ 添加到 pytest 配置中”)

parser.addoption参数说明:

  • name:自定义命令行参数的名字,可以是:“xx”, “-xx” 或 “–xx”
  • action:在命令行中遇到此参数时要采取的基本操作类型
  • - store:默认,只存储参数的值,可以存储任何类型的值,此时 default 也可以是任何类型的值,而且命令行参数多次使用也只能生效一个,最后一个值覆盖之前的值
    • append:存储一个列表,用 append 模式将可以同时多次使用自定义参数,并且 default  默认值必须是一个列表,pytest 会把 default  默认参数的值和多个自定义参数的值放在一个列表中
    • store_const:用 const 为命令行参数指定一个常量值,必须和 const 参数同时使用,使用这个模式后命令行参数不能赋值
  • - append_const:存储一个列表,使用 const 为命令行参数指定一个常量值,并将 default 默认值和 const  常量值添加到列表中,这个模式可以同时多次使用自定义参数,但是还是不能赋值,只能使用常量
  • nargs:应该使用的命令行参数的数量
  • const:某些操作和nargs选择所需的常量值
  • default:如果参数的值不在命令行中,则使用默认值
  • type:可以是 python 的基础类型,比如:int,str,float,list 等类型,如果不指定类型的话,pytest会把接受到的参数值都默认为 str 类型,所以我们有时需要指定参数的类型,在使用 type 指定类型时,也需要把 default 的类型修改为同样的类型!
  • choices:choices 可以指定几个值,自定义参数必须在这几个值中选择一个,否则会报错
  • required:命令行选项是否可以省略(仅可选)
  • help:对参数作用的简要说明
  • metavar:用法消息中参数的名称
  • dest:要添加到 parse_args() 返回的对象中的属性的名称

3.使用request.config.getoption(“–命令行”)获取命令行参数的值

@pytest.fixture(scope=“session”)
def get_env(request):
“”“从配置对象中读取自定义参数的值”“”
return request.config.getoption(“–env”)

4.fixture继承,进行环境切换

@pytest.fixture(autouse=True)
def set_env(get_env):
“”“将自定义参数的值写入全局配置文件”“”
with open(ENV_TXT_FILE, ‘w’, encoding=‘utf-8’) as f:
f.write(get_env)

5.通过pytest命令行传参一键化实现环境切换和测试用例执行

方法二:使用插件pytest-base-url进行命令行传参

1.安装pytest-base-url

pip install pytest-base-url -i https://pypi.douban.com/simple

2.将base_url参数传入到fixture函数中

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
*
[外链图片转存中…(img-6NulWVk4-1713346240526)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值