当前位置: 首页 > 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代码避免了可能会出现的循环导入问题。 正在学习测试的小伙伴可以通过点击下面的小卡片
http://www.hkea.cn/news/14529050/

相关文章:

  • 建立网站的平台电商平台开发公司
  • 即时聊天wordpress手机app惠州百度seo
  • 苏州优秀网站设计公司网站策划网
  • 创建网站超市甘肃搜索引擎网络优化
  • 改版网站收费百度seo自然优化
  • 邯郸网站建设信息保定建站方案
  • 中国信誉建设网站客户端建站
  • aspx网站 整站抓取中国建设银官方网站
  • 申请建设部门网站的报告做打鱼网站犯法不
  • 中天钢铁 网站建设中国建设银行上海市分行网站
  • 网站主体负责人和网站负责人wordpress背景音乐插件
  • 怎样免费建个人网站做印刷厂网站
  • 品牌网站建设公司哪家好做网站原型图用什么软件
  • xml网站模板网页建立站点
  • 吉浦网站建设汕头网站建设模板制作
  • 可以做免费广告的网站网站开发支付宝二维码支付
  • 拼多多网站策划书企业注册信息查询网站
  • 上海网站建设seo1888如何app开发制作
  • 网站接入服务单位名称做柜子好的设计网站
  • 临沂做网站公司哪家好凡科快图官网在线制作
  • 网站建设重庆招聘一级工程造价师
  • 一个具体网站的seo优化郴州市人力资源考试网官网
  • 食品网站建设目的青岛建网站多少钱
  • 租好服务器咋做网站呢wordpress 登录框
  • 最权威的网站推广公司做商城网站如何寻找货源
  • 医药招商网站大全企业信息公开网查询
  • 网站网站开发逻辑营销号视频生成器网页版
  • 网站建设的岗位叫什么网络营销公司网络推广
  • wordpress ydg theme网站标题seo
  • 淄博哪家网络公司做网站好南京 推广 网站建设