现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。
分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
再比如下单–>支付场景,调用下单接口生成订单后会返回订单号,订单号传给支付接口进行支付。
参数关联场景示例
以最常见的网上购物为例,对应的场景及请求我们可以大致简化如下(可联想某宝购物流程):
-
- 用户在购物车选择商品点击【去结算】进入订单确认页,订单确认页点击【提交订单】这时会先请求
下单接口
创建订单
- 用户在购物车选择商品点击【去结算】进入订单确认页,订单确认页点击【提交订单】这时会先请求
-
- 紧接着会拿创建的订单去请求
获取支付凭证接口
,这个接口会调起支付页面,也就是输入密码的支付界面
- 紧接着会拿创建的订单去请求
-
- 输入支付密码后会请求支付服务的支付接口进行实际支付,支付的结果会返回给请求方,告知是否支付成功
这个流程中涉及到的接口其实都是有关联的,我们要对整个流程进行测试那么就需要按顺序调用所有这些涉及到的接口。
但这里我们只需要弄明白参数关联,那么以下单接口
和获取支付凭证接口
为例,举例说明就够了,即先请求下单接口生成订单号,再拿这个订单号去请求获取支付凭证接口,才能调起支付界面并进行支付。
下单接口
如下:
• 接口地址:<服务器>/trade/order/purchase
• 请求类型:post
• 请求参数:{
"goodsId": 10, //商品id
"goodsSkuId": 33, //sku id
"num": 2, //购买数量
"tradePromotion": { //选择的优惠项
"type": 1, //类型<1:优惠券>
"promotionId": 1 //优惠id
}
}
• 返回值 data:{
"code": 0,
"msg": "成功",
"data": {
"tradeNo": "0020220116204344962706666" //交易订单号
},
"t": 1639658625474
}
获取支付凭证接口如下:
• 接口地址:<服务器>/pay/pre/consum
• 请求类型:post
• 请求参数:{
"orderNo":"0020220116204344962706666", //交易订单号
"product":"alipayWapClient" //支付渠道<alipayWapClient:支付宝手机网页支付>
}
• 返回值 data:{
"code": 0,
"msg": "成功",
"data": {
"payNo":"123213213219379213",
"certificate": "<form name=\"punchout_form\" method=\"post\" action=\"https://openapi.alipay.com/gateway.do?charset=UTF-8&method=alipay.trade.wap.pay&sign=aTKlfEnYgR7x9xs1Eyjipo0S%2BFtQ6AKu9d%2Brb7iieMThz2Dq7zp4h8QH4lelTKovOloT%2FPiNXR5miwKgOWW3K6pl0TFO5XX5NSZNBmU%2BPd5ogeo0YT0vCqWUM60rqbYLNtZmvyx%2BAR4Z2SOnqs0CYqVIbZAhpn1Bd5HsdcCCYVgsgOdbEE60Cfu3LG3Z%2FQ0GQIdW24uTyr%2BojRc25ipOC9NIYwtba8UjRw18Z3e7sj75qoIg%2FipICH7FCJBJEdlgBGlNxIjKzhYj4OBg93D&return_url=https%3A%2F%2Fblog.csdn.net%2Fa032788aotify_url=http%3A%2F%2F82.157.145.132%3A8089%2Ftest%2Fnotify%2Fgateway&version=1.0&app_id=2021001105644746&sign_type=RSA2×tamp=2021-150&alipay_sdk=alipay-sdk-java-4.9.5.ALL&format=json\">\n<input type=\"hidden\" name=\"biz_content\" value=\"{"time_expire":"2022-12-31 22:00:00","out_trade_no":"123213213219379213","total_amount":0.01,"subject":"测试商品","product_code":"QUICK_WAP_WAY"}\">\n<input type=\"submit\" value=\"立即支付\" style=\"display:none\" >\n</form>\n<script>document.forms[0].submit();</script>"
},
"t": 1639659171031
}
其中orderNo
字段使这两个接口关联了起来。因为每次生成的订单号都不一样,所以在测试这个场景的时候,就需要使这两个接口的参数进行关联,才能走通。
脚本编写
那么在pytest框架的自动化测试中,参数关联可以怎样处理呢?这里提供两种思路,如下:
- • 根据业务场景的调用时序,在用例中按顺序调用接口
- • 将依赖的接口编写成
fixture
函数,并使用yield
返回下个接口需要的参数
- 在用例中按顺序调用
代码示例如下:
import requests
import json
import pytest
def test_order_pay():
'''
创建订单->获取支付凭证,调起支付界面
:return:
'''
# 先调用下单接口生成订单
url_order = "https://gouwu.com/trade/order/purchase"
data_order = {
"goodsId": 10,
"goodsSkuId": 33,
"num": 2,
"tradePromotion": {
"type": 1,
"promotionId": 1
},
"tradeDirectionArticle": {
"articleId": 1
}
}
res_order = requests.post(url=url_order, json=data_order).text
tradeNo = json.loads(res_order)["tradeNo"]
# 再请求获取支付凭证接口
url_pay = "https://gouwu.com/pay/pre/consum"
data_pay = {
"orderNo": tradeNo, # tradeNo通过下单接口获取
"product": "alipayWapClient"
}
res_pay = requests.post(url=url_pay, json=data_pay).text
res_pay = json.loads(res_pay)
# 断言
assert res_pay["code"]==0
assert res_pay["data"]["payNo"]
assert res_pay["data"]["certificate"]
if __name__ == '__main__':
pytest.main()
上面的代码只是流水式的进行调用,我们还可以先将每个接口请求封装成单独的函数,在测试用例中只需按照顺序调用这些函数即可,这个我们会在后续的文章中进行说明。
2. 使用Fixture
函数
pytest中Fixture
函数可以参考我之前的文章pytest-Fixture(固件)")。
定义Fixture函数,代码示例如下:
@pytest.fixture()
def get_order():
'''
请求下单接口,创建订单
:return:
'''
url_order = "https://gouwu.com/trade/order/purchase"
data_order = {
"goodsId": 10,
"goodsSkuId": 33,
"num": 2,
"tradePromotion": {
"type": 1,
### 一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)
### 二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
![](https://img-blog.csdnimg.cn/img_convert/8c4513c1a906b72cbf93031e6781512b.png)
### 三、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
![](https://img-blog.csdnimg.cn/afc935d834c5452090670f48eda180e0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56iL5bqP5aqb56eD56eD,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618317507)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**