测试人员每天都跟不同的环境打交道,比如线上环境,测试环境,预上线环境等等,那么作为自动化测试人员写的代码,我们也要具备能自由切换环境的能力,那么今天小编就给大家聊一下,如何能让我们python语言写的测试用例可以自由切换到不同的环境下面去运行呢?
Python写测试用例离不开单元测试框架,最近比较火的单元测试框架就是pytest。人家火也是有原因的,插件那是相当丰富,支持多断言,报告精美,咳咳,不在继续放彩虹屁了,我们言归正传,今天给他大家聊一下通过pytest框架实现自由环境切换的几种方法。
pytest-base-url
pytest有一个插件叫pytest-base-url ,是管理base_url非常好的一款插件,文档资料链接:https://pypi.org/project/pytest-base-url/
下载方式:
pip install pytest-base-url

案例如下:

第1种使用方式是终端添加–base-url这个命令,如下所示:

第2种使用方式是在pytest.ini配置文件种去配置base_url,然后自动读取url的数据,这样就不用添加–base-url这个命令行参数了:

命令行直接运行pytest 即可。
hooks函数
pytest有个hooks函数,可以自定义命令行参数,一般在conftest.py中去引用。
Conftest.py中写pytest_addoption这个hooks函数,可以自定义命令行参数,base_url只能对一个url地址进行传递,那么有的项目不仅需要多项目请求的url地址进行不同环境的切换,还需要对mysql的url地址进行不同的切换,这个时候就可以用自定义命令,定义不同的命令行参数,这样我们在执行pytest的时候就可以自由进行传递。
代码如下:
通过pytest_addoption这个hooks函数,设置了两个命令行参数,一个是–mysql-url,另一个是–project-url,help后面是对这两个命令行的解释,解释说明这两个命令行代表什么含义

通过fixture函数中的request参数去读取命令行中传递的参数,赋值给一个变量,就可以在pytest中随便使用。

项目代码如下:
fixture函数的调用,直接把fixture的名字当成参数传递到测试用例里面即可

运行测试的命令为:
pytest -s --mysql -url 192.168.1.11 --project-url http://www.example.com
如下图所示:

yml和fixture
通过 yml文件 和 fixture 进行配合使用,首先在项目目录下面创建一个conf.yml,然后里面去手动配置现在要运行的环境,截图如下:

然后在创建一个conftest.py,里面定义两个fixture函数,一个用来读取conf.yml里面的内容,另一个用来配置具体的环境信息
比如qa环境,release环境,然后通过conf.yml里面配置的qa还是release,来读取project_url 和 mysql_url,截图如下:


项目代码(还是之前的测试用例)如下:

命令行运行正常,如下图所示:
[En]
The command line runs normally, as shown in the screenshot below:

好的,这是三种切换测试环境的方法,该编辑器与您共享了这三种方法。我认为第三个更灵活。合作伙伴可以根据自己公司的项目特点自由选择。这就是本文的全部内容。如果您有任何问题,可以在留言区留言。
[En]
Well, these are the three ways to switch the test environment that the editor shared with you. I think the third one is more flexible. Partners can choose freely according to the characteristics of their own company’s projects. That’s all for the article. If you have any questions, you can leave a message in the message area.
房子应该一层一层地盖,我们应该学一点知识。大家在学习过程中要有一个好的基础,多动手练习,不多说,在这里努力一点干货!这是我熬夜整理(功能、接口、自动化、性能、测试)技能学习材料+实用讲解的阶段,非常适合自学,比找材料自学效率高得多,与大家分享。
[En]
The house should be built one floor at a time, and we should learn a little bit about knowledge. Everyone in the learning process to have a good foundation, more hands-on practice, do not say much, here hard on a practical information! This is the stage I stayed up late to sort out (function, interface, automation, performance, test) skills learning materials + practical explanation, which is very suitable for private study, much more efficient than finding materials for self-study, and share it with you.
领取关 w/x/g/z/h:软件测试小dao

这并不容易打字。如果这篇文章对你有帮助,点击它,并给作者一个鼓励。这也方便您下次快速找到它。
[En]
It is not easy to type. If this article is helpful to you, click on it and give the author an encouragement. It is also convenient for you to find it quickly next time.
Original: https://blog.csdn.net/weixin_57794111/article/details/124687678
Author: 软件测试呀
Title: 赶快收藏,Pytest框架环境切换实战教程
相关阅读
Title: 餐厅订单数据分析
1.餐厅订单数据分析
1.1 针对订单order_id
- 什么菜最受欢迎
- 点菜的种类
- 点菜的数量
- 消费金额最大
- 平均消费
1.2 针对时间日期进行分析
- 时间段与点菜量关系图
- 日期与点菜量关系图
- 星期与点菜量关系图
2 技术点
2.1 pandas模块
2.1.1拼接数据
- pd.concat([列1,...], axis=0) axis值为0 向下拼接 值为1向左拼接 关键字key支持联合拼接
2.1.2 apply函数 & map函数遍历映射处理dataframe对象中单个元素
2.1.3 drop函数按照指定条件删除内容
- 根据某列某值删除行需依靠索引
- 多条件删除,每个条件需使用()分开
- &:交集;|:并集;-:非
2.1.4 根据字段聚合 groupby(by=””).聚合函数() 聚合函数:sum()|count()|min()|max()…
2.1.5 对某字段按值进行统计次数和频次 df[”].value_counts()
2.2 wordcloud模块
2.2.1 利用wordcloud模块WordCloud类依据词频绘制词云图
- 使用WordCloud首先需要实例化对象 含中文字符需手动设置字体参数
- 展示需要调用plt.imshow()
2.3 matplotlib模块
2.3.1 figure对象(画布)
2.3.1.1 设置fig大小
- fig.set_figwidth()
- fig.set_figheight()
2.3.1.2 获取当前fig对象 plt.gcf()
2.3.2 axes对象(图表)
2.3.2.1 影藏边框线
- ax.spines['position'].set_visible('none')
2.3.2.2 统一画布绘制多个图表
- ax=fig.add_subplots(rows, cols, index) # 画布添加图表
- ax = plt.plot() | df.plot() # 绘制图表
2.3.2.3 y轴刻度标签与y轴标签移动至右边
- ax.yaxis.tick_right() # y轴刻度
- ax.yaxis.set_label_posion('right') # y轴标签
2.3.3 plt对象
2.3.3.1 绘制同一坐标系绘制多个图解决x坐标轴刻度统一
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
data1 = pd.read_excel("meal_order_detail.xlsx", sheet_name="meal_order_detail1")
data2 = pd.read_excel("meal_order_detail.xlsx", sheet_name="meal_order_detail2")
data3 = pd.read_excel("meal_order_detail.xlsx", sheet_name="meal_order_detail3")
data = pd.concat([data1, data2, data3], axis=0)
data.dropna(axis=1, how="all",inplace=True)
data['dishes_name'] = data['dishes_name'].apply(lambda x: x.replace("\r\n",''))
data.info()
`
Int64Index: 10037 entries, 0 to 3610
Data columns (total 11 columns):
# Column Non-Null Count Dtype
需要餐厅订单数据的伙伴,可以在下方留言~
Original: https://blog.csdn.net/qq_42965915/article/details/127139467
Author: Yph_Jerry
Title: 餐厅订单数据分析
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/337061/
转载文章受原作者版权保护。转载请注明原作者出处!