当前位置: 首页 > news >正文

锁定网站导航栏贸易公司做网站

锁定网站导航栏,贸易公司做网站,字体版权登记网站,网站做百度联盟收入已经很低了tep是一款测试工具#xff0c;在pytest测试框架基础上集成了第三方包#xff0c;提供项目脚手架#xff0c;帮助以写Python代码方式#xff0c;快速实现自动化项目落地。 在tep项目中#xff0c;自动化测试用例都是放到tests目录下的#xff0c;每个.py文件相互独立在pytest测试框架基础上集成了第三方包提供项目脚手架帮助以写Python代码方式快速实现自动化项目落地。 在tep项目中自动化测试用例都是放到tests目录下的每个.py文件相互独立没有依赖1个文件即1条用例彼此分离。 虽然用例也能相互引用但是除非万不得已一般不建议这么做牵一发动全身后期维护困难。 用例的代码编写思路是从上往下的和pytest/unittest/script常规写法无异不会有学习成本一般也不会有问题。有成本有问题的可能是环境变量和fixtures因为tep做了封装提供了依赖注入的共享方式fixture又是pytest较难理解的知识点所以有必要通过本文来讲讲tep环境变量、fixtures、用例三者之间的关系帮助理解以便更灵活顺手的借助tep实现pytest自动化项目。 假如不用环境变量和fixtures 假如不用环境变量和fixtures是完全可以的比如在tests下新建脚本login_test.py from tep.client import requestdef test():response request(post,urlhttps://qa.com/api/users/login,headers{Content-Type: application/json},json{username: admin,password: 123456,})assert response.status_code 400 请求接口https://qa.com/api/users/login断言响应状态码小于400。问题来了url固定假如需要切换两个环境qa和release该怎么办 参数化 无论是做自动化测试还是性能测试都会接触到参数化这个词。它是指把代码中的固定数据硬编码定义成变量让每次运行时数据不一样固定数据变为动态数据。动态数据的来源是变量、数据库、外部文件等。动态数据的类型一般是常量的字符串也可以是函数比如JMeter的函数助手也可以是依赖注入比如pytest的fixture。 依赖注入的fixture “依赖注入是控制反转IoC Inversion of Control的一种技术形式”这句话出自维基百科我也不知道什么意思画个图简单表达下 意思是给client一个injectorclient不需要做什么就能用到service。 pytest的fixture实现了依赖注入允许我们在不修改测试代码的情况下引入fixture来额外添加一些东东。 对于url来说域名是需要做参数化的不同环境域名不同所以tep把它做成了fixture通过函数参数引入 from tep.client import request from tep.fixture import *def test(url): # 引入fixtureresponse request(post,urlurl(/api/users/login),headers{Content-Type: application/json},json{username: admin,password: 123456,})assert response.status_code 400 tep.fixture.url定义如下 pytest.fixture(scopesession) def url(env_vars):def domain_and_uri(uri):if not uri.startswith(/):uri / urireturn env_vars.domain urireturn domain_and_uri 如果一眼就看懂了恭喜你如果一眼就看懵了没关系。我会花功夫把它讲明白它很关键 把fixture当变量看 虽然从定义上看fixture是用def关键字定义的函数但是理解上把它看做变量就可以了。比如 import pytestpytest.fixture def name():return dongfanger 一般函数的用法是函数名加小括号通过name()才能得到dongfanger。fixture不一样以上定义可以理解为 name dongfanger 把dongfanger赋值给namefixture名 return值。通过变量name就得到dongfanger了。 既然是变量那么就能随便赋值str、function、class、object都行。比如在fixture内部定义个函数 import pytestpytest.fixture def who():def get_name():return dongfangerreturn get_name 理解为把函数名get_name赋值给fixture名变量 who get_name get_name是个函数名需要加小括号get_name()才能得到dongfanger。who也必须通过who()才能得到dongfanger。再看tep.fixture.url是不是清楚些了 pytest.fixture(scopesession) def url(env_vars):def domain_and_uri(uri):if not uri.startswith(/):uri / urireturn env_vars.domain urireturn domain_and_uri 理解为把函数名domain_and_uri赋值给fixture名变量 url domain_and_uri 使用时通过url(/api)得到域名和uri拼接后的结果。 第2行的def url(env_vars):也有一个参数env_vars接下来继续解释。 fixture参数是其他fixture fixture的参数只能是其他fixture。比如 import pytestpytest.fixture def chinese_name():return 东方erpytest.fixture def english_name(chinese_name):return dongfanger 调用english_namepytest会先执行参数里的其他fixture chinese_name然后执行自己english_name。 如果把tep.fixture.url拆成两步来看就很清晰了第一步 pytest.fixture(scopesession) def url(env_vars):func Nonereturn func 第二步 pytest.fixture(scopesession) def url(env_vars):func Nonedef domain_and_uri(uri):if not uri.startswith(/):uri / urireturn env_vars.domain urifunc domain_and_urireturn func 环境变量 tep.fixture.url的参数是另外一个fixture env_vars 环境变量它的定义如下 from tep.fixture import *pytest.fixture(scopesession) def env_vars(config):class Clazz(TepVars):env config[env]Variables define start# Environment and variablesmapping {qa: {domain: https://qa.com,},release: {domain: https://release.com,}# Add your environment and variables}# Define properties for auto displaydomain mapping[env][domain]Variables define endreturn Clazz() 只看中间注释Variables define start到Variables define end部分即可。url参数化的域名就在这里mapping字典建立了环境和变量之间的映射根据不同的环境key获取不同的变量value。 config fixture的作用是读取conf.yaml文件里面的配置。 参数化的方式很多JMeter提供了4种参数化方式tep的fixture env_vars借鉴了JMeter的用户自定义变量 env_vars.put()和env_vars.get()借鉴了JMeter BeanShell的vars.put()和vars.get()。 实例测试多个网址 讲到最后形成了思路通过实际的例子看看环境变量、fixtures、用例是怎么用起来的加深下印象。假如qa环境有2个网址学校端和机构端脚本都需要用到。 第一步修改env_vars编辑fixture_env_vars.py Variables define start# Environment and variablesmapping {qa: {domain: https://qa.com,domain_school: https://school.qa.com, # 新增domain_org: https://org.qa.com # 新增},release: {domain: https://release.com,domain_school: https://school.release.com # 新增domain_org: https://org.release.com # 新增}# Add your environment and variables}# Define properties for auto displaydomain mapping[env][domain]domain_school mapping[env][domain_school] # 新增domain_org mapping[env][domain_org] # 新增Variables define end 添加了6行代码定义了env_vars.domain_school和env_vars.domain_org。 第二步定义fixtures新建fixture_url.py pytest.fixture(scopesession) def url_school(env_vars):def domain_and_uri(uri):if not uri.startswith(/):uri / urireturn env_vars.domain_school urireturn domain_and_uripytest.fixture(scopesession) def url_org(env_vars):def domain_and_uri(uri):if not uri.startswith(/):uri / urireturn env_vars.domain_org urireturn domain_and_uri 参照tep.fixture.url修改env_vars.domain为env_vars.domain_school和env_vars.domain_org新增了2个fixture url_school和url_org。 更进一步也许会定义fixture login_school和login_org灵活选择。 小结 本文循序渐进的讲解了tep环境变量、fixtures和用例之间的关系重点对tep.fixture.url进行了解释只要理解了它整体关系就很清楚了。之所以要用fixture原因一是多人协作共享我们需要用别人写好的函数复用返回值有些同学习惯定义函数参数参数不变还好万一哪天改了别人引用的用例会全部报错fixture很好的限制了这一点它默认是不能传参的虽然可以通过定义内部函数来实现传参但是并不推荐这么做宁愿增加冗余代码定义多个fixture也比代码耦合度高好一些。原因二是import的问题pytest会自动查找conftest.py里的fixturetep会进一步自动查找fixtures下的fixture导入到conftest.py不需要import就能使用减少了import代码避免了可能会出现的循环导入问题。 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 软件测试面试小程序 被百万人刷爆的软件测试题库谁用谁知道全网最全面试刷题小程序手机就可以刷题地铁上公交上卷起来 涵盖以下这些面试题板块 1、软件测试基础理论 2、web,app接口功能测试 3、网络 4、数据库 5、linux 6、web,app接口自动化 7、性能测试 8、编程基础9、hr面试题 10、开放性测试题11、安全测试12、计算机基础 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你
http://www.w-s-a.com/news/311455/

相关文章:

  • 银川做网站贵德县wap网站建设公司
  • 深圳网站建设zvge山西省煤炭基本建设局网站
  • 佛山网页网站设计线上怎么做推广和宣传
  • 多个域名绑定同一个网站案例
  • 建设网站都需要准备什么代理加盟微信网站建设
  • 网站备案没有了wordpress 添加按钮
  • 湖南建设银行宣传部网站福田蒙派克空调滤芯安装位置图
  • wap网站搜索wordpress工作室模板
  • 青岛金融网站建设如何提交网站地图
  • 制作简单门户网站步骤网站建设论文的摘要
  • 可以直接进入网站的正能量照片学做静态网站
  • 织梦做社交网站合适吗网站的市场如何制作
  • 阳曲网站建设价格多少四川佳和建设工程网站
  • 免费注册店铺位置sem seo什么意思
  • 建筑网站搜图电子商务网站建设渠道
  • 学校网站内容四川手机网站开发
  • 网站制作公司违法商业网站运营成本
  • 显示佣金的网站是怎么做的广告设计主要做哪些
  • 做阿里网站的分录济南seo网站排名关键词优化
  • 北京建设银行纪念钞预定官方网站wordpress中文优化版
  • 宝安做棋牌网站建设找哪家效益快创意设计师个人网站
  • 做线上网站需要多少钱系统开发板价格
  • 建筑企业登录哪个网站wordpress feed地址
  • 网站建设流程百科提升seo搜索排名
  • 杭州网站建设 巴零做销售怎么和客户聊天
  • 北京自己怎样做网站wordpress oauth2插件
  • 上海800做网站wordpress建站的好处
  • 婚纱摄影网站设计模板如何做好网站内容
  • cdn网站加速招商计划书模板ppt
  • 我在某网站网站做代理开发小程序外包