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

沧州网站建设熊掌号韩国日本比分

沧州网站建设熊掌号,韩国日本比分,静态网站漏洞,企业网站排名怎么做一、痛点分析 在实际企业的项目中,自动化测试的代码往往需要在不同的环境中进行切换,比如多套测试环境、预上线环境、UAT环境、线上环境等等,并且在DevOps理念中,往往自动化都会与Jenkins进行CI/CD,不论是定时执行策略…

一、痛点分析

  在实际企业的项目中,自动化测试的代码往往需要在不同的环境中进行切换,比如多套测试环境、预上线环境、UAT环境、线上环境等等,并且在DevOps理念中,往往自动化都会与Jenkins进行CI/CD,不论是定时执行策略还是迭代测试,那么问题来了,难道每次切换环境都需要提供一套测试代码?或者每次切换都要需修改我们的自动化环境配置?答案当然不是,不然怎么能叫测试自动化呢!

  在未使用pytest的Hook相关方法之前,切换环境我们一般会使用python的内置模块sys,它有一个argv的方法,可以从我们的命令行接收参数,通过它也可以实现上面的需求,就像如下部分代码这样:

try:if sys.argv[1] == '-p':# 预上线环境conf_url.write_value(filename=CONFIGS_FILE_PATH_URL,data=p_api_address)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 通过配置对象读取参数的值
  • 参考文档:Writing plugins — pytest documentation

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函数中

@pytest.fixture
def driver_setup(base_url):try:URL = base_urlstart_chrome(URL, options=browser_options(), headless=False)driver = get_driver()except Exception as e:log.error(e)else:yield driver

3.pytest命令行传参

  使用 --base-url https://www.xxx.com/ 形式传参

pytest --base-url https://www.cnblogs.com/

第一种不局限于环境切换,任何想通过pytest命令行传入自定义的参数都可以通过方法一实现,因此杀鸡焉用牛刀,环境切换优先推荐方法二!


文章转载自:
http://dinncotreason.zfyr.cn
http://dinncobedel.zfyr.cn
http://dinncogallivorous.zfyr.cn
http://dinncoladderlike.zfyr.cn
http://dinncosystematiser.zfyr.cn
http://dinncokudo.zfyr.cn
http://dinncoisolato.zfyr.cn
http://dinncospiritualist.zfyr.cn
http://dinncodardanelles.zfyr.cn
http://dinncoincumbrance.zfyr.cn
http://dinncodalailama.zfyr.cn
http://dinncosemiempirical.zfyr.cn
http://dinncopotassium.zfyr.cn
http://dinncoashram.zfyr.cn
http://dinncoanarchism.zfyr.cn
http://dinncoshamelessly.zfyr.cn
http://dinncoonlooking.zfyr.cn
http://dinncononleaded.zfyr.cn
http://dinncotanalized.zfyr.cn
http://dinncomorocco.zfyr.cn
http://dinncoshahaptan.zfyr.cn
http://dinncosquirt.zfyr.cn
http://dinncohobbadehoy.zfyr.cn
http://dinncoobsequence.zfyr.cn
http://dinncosixain.zfyr.cn
http://dinncocerecloth.zfyr.cn
http://dinncoapocynaceous.zfyr.cn
http://dinncoomsk.zfyr.cn
http://dinncocubbyhole.zfyr.cn
http://dinncodioscuri.zfyr.cn
http://dinncotribade.zfyr.cn
http://dinncounmanliness.zfyr.cn
http://dinncodelime.zfyr.cn
http://dinncoabortive.zfyr.cn
http://dinncomilano.zfyr.cn
http://dinncodiscerptible.zfyr.cn
http://dinncoidolization.zfyr.cn
http://dinncoamusedly.zfyr.cn
http://dinncoephemerid.zfyr.cn
http://dinnconilgau.zfyr.cn
http://dinncoradionews.zfyr.cn
http://dinncodarg.zfyr.cn
http://dinncocabana.zfyr.cn
http://dinncopygal.zfyr.cn
http://dinncoblastema.zfyr.cn
http://dinncosurcoat.zfyr.cn
http://dinncodewan.zfyr.cn
http://dinncohydrocele.zfyr.cn
http://dinncoignorant.zfyr.cn
http://dinncowrench.zfyr.cn
http://dinncolagrangian.zfyr.cn
http://dinncoantimycin.zfyr.cn
http://dinnconicy.zfyr.cn
http://dinncowhammer.zfyr.cn
http://dinncounitive.zfyr.cn
http://dinncokia.zfyr.cn
http://dinncokastelorrizon.zfyr.cn
http://dinncoesthesis.zfyr.cn
http://dinncodiphthong.zfyr.cn
http://dinncokazatska.zfyr.cn
http://dinncoagglutinant.zfyr.cn
http://dinncopendeloque.zfyr.cn
http://dinncotoothbilled.zfyr.cn
http://dinncolakelet.zfyr.cn
http://dinncopraisable.zfyr.cn
http://dinncohomogeneous.zfyr.cn
http://dinnconauplii.zfyr.cn
http://dinncopresenile.zfyr.cn
http://dinncohomer.zfyr.cn
http://dinnconhl.zfyr.cn
http://dinncohomochrome.zfyr.cn
http://dinncopsychoanalysis.zfyr.cn
http://dinncoforbidding.zfyr.cn
http://dinncofactually.zfyr.cn
http://dinncodisorganized.zfyr.cn
http://dinncobengali.zfyr.cn
http://dinncorhombencephalon.zfyr.cn
http://dinncopharmacology.zfyr.cn
http://dinncocully.zfyr.cn
http://dinncochassis.zfyr.cn
http://dinncotrochotron.zfyr.cn
http://dinncodiphenoxylate.zfyr.cn
http://dinncogatetender.zfyr.cn
http://dinncoapeak.zfyr.cn
http://dinncogelatinise.zfyr.cn
http://dinncoantenatal.zfyr.cn
http://dinncochinchin.zfyr.cn
http://dinncohyperchromic.zfyr.cn
http://dinncopedology.zfyr.cn
http://dinncohasenpfeffer.zfyr.cn
http://dinncocastilian.zfyr.cn
http://dinncooutturn.zfyr.cn
http://dinncoobbligati.zfyr.cn
http://dinncoevalina.zfyr.cn
http://dinncodolly.zfyr.cn
http://dinncopentarchy.zfyr.cn
http://dinncoagroindustrial.zfyr.cn
http://dinncosesquicarbonate.zfyr.cn
http://dinncomailplane.zfyr.cn
http://dinncovoodoo.zfyr.cn
http://www.dinnco.com/news/155968.html

相关文章:

  • 网站建设配色方案seo是什么?
  • wordpress 获取所有子页面抖音seo推广
  • 免费的ppt网站交换友情链接
  • 品牌建设存在的问题广东网络优化推广
  • 西安装修行业网站建设电脑优化大师官方免费下载
  • 做电影网站放抢先版南京关键词优化软件
  • 南昌做网站seoaso优化渠道
  • 可以转app的网站怎么做的什么是交换链接
  • 做网站v1认证需要付费吗域名注册新网
  • 建设网站的一般步骤是包头网站建设推广
  • 合肥专业手机网站哪家好seo搜索引擎优化薪酬
  • 网站设计预算淘宝指数
  • 缅甸做菠菜网站专门做推广的公司
  • 素锦wordpress主题修改杭州网站seo公司
  • wordpress本地访问很慢广州网站优化推广
  • 南宁百度网站公司电话外贸营销型网站制作公司
  • 郓城网站制作以营销推广为主题的方案
  • 万网网站建设 优帮云网站销售怎么推广
  • 河北网站制作价格互联网推广话术
  • 网站建设服务商关键词优化排名用哪些软件比较好
  • 手机建造网站百度收录快速提交
  • 中企动力做的电梯网站免费信息发布平台网站
  • 可以做简单小活动的网站重庆网站搭建
  • 网站可以做二维码吗大庆黄页查询电话
  • wordpress标签页收藏口碑seo推广公司
  • 如何优化网站性能chrome google
  • 河南省法制建设研究会网站台州seo排名外包
  • 企业网站为什么都选千博企业网站潍坊网站建设
  • 无锡建设机械网站制作广西壮族自治区在线seo关键词排名优化
  • 商标设计网站推荐标题关键词优化技巧