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

专业上海网站建设网站核检单

专业上海网站建设,网站核检单,二手书网站建设,做网站公司不给源码一、整体结构 框架组成#xff1a;pytestrequestsallure 设计模式#xff1a; 关键字驱动 项目结构#xff1a; 工具层#xff1a;api_keyword/ 参数层#xff1a;params/ 用例层#xff1a;case/ 数据驱动#xff1a;data_driver/ 数据层#xff1a;data/ 逻… 一、整体结构 框架组成pytestrequestsallure 设计模式 关键字驱动 项目结构 工具层api_keyword/ 参数层params/ 用例层case/ 数据驱动data_driver/ 数据层data/ 逻辑层logic/ 二、具体步骤及代码 1、工具层 将get、post等常用行为进行二次封装。 代码api_key.py如下 import allure import json import jsonpath import requests# 定义一个关键字类 class ApiKey:# 将get请求行为进行封装allure.step(发送get请求)def get(self, url, paramsNone, **kwargs):return requests.get(urlurl, paramsparams, **kwargs)# 将post请求行为进行封装allure.step(发送post请求)def post(self, url, dataNone, **kwargs):return requests.post(urlurl, datadata, **kwargs)# 由于接口之间可能相互关联因此下一个接口需要上一个接口的某个返回值此处采用jsonpath对上一个接口返回的值进行定位并取值allure.step(获取返回结果字典值)def get_text(self, data, key):# json数据转换为字典json_data json.loads(data)# jsonpath取值value jsonpath.jsonpath(json_data, $..{0}.format(key))return value[0]其中引用allure.step()装饰器进行步骤详细描述使测试报告更加详细。 使用jsonpath对接口的返回值进行取值。 2、数据层 数据采用yaml文件。 代码user.yaml如下 -user:username: adminpassword: 123456msg: successtitle: 输入正确账号、密码登录成功 -user:username: admin1password: 1234561msg: 用户名或密码错误title: 输入错误账号1、密码1登录失败 -user:username: admin2password: 1234562msg: 用户名或密码错误title: 输入错误账号2、密码2登录失败其中title是为了在用例进行时动态获取参数生成标题。 3、数据驱动层 对数据进行读写。 代码yaml.driver.py如下: import yamldef load_yaml(path):file open(path, r, encodingutf-8)data yaml.load(file, Loaderyaml.FullLoader)return data4、参数层 参数层存放公共使用的参数在使用时对其进行调用。 代码allParams.py如下 规则全局变量使用大写字母表示 # 地址 URL http://39.98.138.157:# 端口 PORT 50005、逻辑层 用例一进行登录的接口请求此处登录请求在yaml文件里设置了三组不同的数据进行请求。 用例二进行个人查询的接口请求此处需要用到登录接口返回的token值。 用例三、进行添加商品到购物车的接口请求此处需要用到登录接口返回的token值以及个人查询接口返回的openid、userid值 用例四、进行下单的接口请求此处需要用到登录接口返回的token值以及个人查询接口返回的openid、userid、cartid值 注意由于多数接口需要用到登录接口返回的token值因此封装一个conftest.py定义项目级前置fixture在整个项目只执行一次可以在各个用例中进行调用其他共用参数也可以采取类似前置定义。同时由于此处定义的项目级fixture因此可以将初始化工具类ak ApiKey()也放入其中。 代码conftest.py如下 from random import randomimport allure import pytestfrom pytest_demo_2.api_keyword.api_key import ApiKey from pytest_demo_2.params.allParams import *def pytest_collection_modifyitems(items):测试用例收集完成时将收集到的item的name和nodeid的中文显示在控制台上for item in items:item.name item.name.encode(utf-8).decode(unicode_escape)item._nodeid item.nodeid.encode(utf-8).decode(unicode_escape)# 项目级fix整个项目只初始化一次 pytest.fixture(scopesession) def token_fix():# 初始化工具类ak ApiKey()with allure.step(发送登录接口请求并获取token整个项目只生成一次):# 请求接口# url http://39.98.138.157:5000/api/loginurl URL PORT /api/login# 请求参数userInfo {username: admin,password: 123456}# post请求res ak.post(urlurl, jsonuserInfo)# 获取tokentoken ak.get_text(res.text, token)# 验证代码验证token只生成一次token_random random()return ak, token, res, token_random其中也包含了防止中文乱码加入了pytest_collection_modifyitems函数。 设置好conftest后就可以应用在逻辑层里面了。 代码shopingApi.py如下 import pytest import allure from pytest_demo_2.api_keyword.api_key import ApiKey from pytest_demo_2.params.allParams import *class ApiCase():# 登录逻辑def params_login(self, userdata):# 动态获取参数生成标题allure.dynamic.title(userdata[title])# 初始化工具类ak ApiKey()# 请求接口url URL PORT /api/login# 请求参数userInfo {username: userdata[user][username],password: userdata[user][password]}res ak.post(urlurl, jsonuserInfo)with allure.step(接口返回信息校验及打印):print(/api/login登录接口请求响应信息)print(res.text)# 获取响应结果msg ak.get_text(res.text, msg)print(msg)# 断言assert msg userdata[msg]def params_getuserinfo(self, token_fix):# 从fix中获取预置的工具类和token,所有返回值都需要接收ak, token, res, token_random01 token_fixwith allure.step(发送个人查询接口请求):url URL PORT /api/getuserinfoheaders {token: token}res1 ak.get(urlurl, headersheaders)with allure.step(接口返回信息校验及打印):print(/api/getuserinfo个人用户查询接口请求响应信息)print(res1.text)# print(验证的random值测试用)# print(token_random01)name ak.get_text(res1.text, nikename)# 断言assert 风清扬 namereturn res1def params_addcart(self, token_fix):# 从fix中获取预置的工具类和token# 所有返回都要获取不然会报错ak, token, res, token_random01 token_fixwith allure.step(调用getuserinfo接口获取返回信息):res1 self.params_getuserinfo(token_fix)with allure.step(发送添加商品到购物车请求):# 添加商品到购物车,基于token、userid、openid、productidurl URL PORT /api/addcarthd {token: token}data {userid: ak.get_text(res1.text, userid),openid: ak.get_text(res1.text, openid),productid: 8888}# 发送请求res2 ak.post(urlurl, headershd, jsondata)with allure.step(接口返回信息校验及打印):print(/api/addcart添加商品到购物车请求响应信息)print(res2.text)# print(验证的random值测试用)# print(token_random01)result ak.get_text(res2.text, result)assert success resultreturn res2def params_createorder(self, token_fix):ak, token, res, token_random01 token_fixwith allure.step(调用addcart接口获取返回信息):res1 self.params_addcart(token_fix)with allure.step(发送下单请求):url URL PORT /api/createorder# 从项目级fix中获取tokenhd {token: token}# 从添加商品到购物车接口中获取userid,openid,cartiddata {userid: ak.get_text(res1.text, userid),openid: ak.get_text(res1.text, openid),productid: 8888,cartid: ak.get_text(res1.text, cartid)}res2 ak.post(urlurl, headershd, jsondata)with allure.step(接口返回信息校验及打印):print(/api/createorder下单请求响应信息)print(res2.text)# print(验证的random值测试用)# print(token_random01)result ak.get_text(res1.text, result)assert success result6、用例层 调用逻辑层进行用例管理和数据传输。 代码test_Tree.py如下 import allure import pytest from pytest_demo_2.data_driver import yaml_driver from pytest_demo_2.logic.shopingApi import ApiCaseallure.epic(shopXo电商平台接口-接口测试) class TestTree():# 初始化用例库actions1 ApiCase()allure.feature(01.登陆)allure.story(02.一般场景)pytest.mark.parametrize(userdata, yaml_driver.load_yaml(./data/user.yaml))def test_case01(self, userdata):self.actions1.params_login(userdata)allure.feature(02.个人查询)allure.story(01.典型场景)allure.title(个人查询)def test_case02(self, token_fix):self.actions1.params_getuserinfo(token_fix)allure.feature(03.添加商品到购物车)allure.story(01.典型场景)allure.title(添加商品到购物车)def test_case03(self, token_fix):self.actions1.params_addcart(token_fix)allure.feature(04.下单)allure.story(01.典型场景)allure.title(下单)def test_case04(self, token_fix):self.actions1.params_createorder(token_fix)7、运行 代码main_run.py如下 import os import pytestdef run():pytest.main([-v, ./case/test_Tree.py,--alluredir, ./result, --clean-alluredir])os.system(allure serve result)# os.system(allure generate ./result/ -o ./report_allure/ --clean)if __name__ __main__:run()8、结果 最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你
http://www.hkea.cn/news/14447683/

相关文章:

  • 岳池发展建设集团有限公司门户网站学校做网站需要什么
  • 网络设计图纸是什么搜索引擎优化规则
  • 出口手工艺品网站建设方案大门户wordpress主题
  • 淡水网站建设哪家便宜wordpress免费slider
  • 学习资料黄页网站免费网站需求分
  • 甘肃省建设厅网站asp网站相册
  • 上海工商网站官网微信里的小程序怎么开店
  • 网站制作有限公司铜川市新区建设局网站
  • 微信小程序网站建设推广创建一个自己的公司
  • 网站都要icp备案吗php怎么建立网站
  • 两个域名指向同一个网站网站建设包含什么
  • 网站平台建设需求的意见wordpress产品增加视频
  • 计算机网站设计怎么做石家庄便宜做网站
  • 怎么建立网站的步骤怎么创建小程序商店
  • 06628 网页制作与网站建设网页设计师中级技能要求
  • 河北住房和城乡建设厅网站首页石家庄做企业网站最好的公司
  • vi设计整套宁波seo推广推荐公司
  • 中国建设执业资格注册中心网站百度推广后台管理
  • 外贸营销网站怎么建设网站开发 商标第几类
  • 企梦网站建设wordpress 哪个好用吗
  • 跨国购物网站建设费用做爰片在线看网站
  • 花店网站首页模版广州市场调研公司
  • 学做网站开发要1万6河南最新消息
  • 设计网站推广公司网页制作如何做阅读网站
  • 正规网站建设首选公司wordpress免费教程视频
  • 营销创意网站合肥网络公司网站建设
  • 网站推广网站策划电商网站建设商业计划书
  • 东莞哪里做网站没有网站怎么做淘宝客
  • 门户网站 制作多少钱外贸是什么
  • 机场建设网站整站优化该怎么做