请选择 进入手机版 | 继续访问电脑版

robotest接口自动化测试之参数传递so easy

[复制链接]
期待幸福 发表于 2021-1-2 12:16:34 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
  为什么要把参数举行通报呢?是的,要用!
  

  这不是废话吗!

对测试数据参数化,而参数是可以被其他需要使用到的,比如,c=1+2,我们可以设置a=1,b=2,公式就可以使用c=a+b取代。我们a、b就可以填写其他数据代进去。我们软件测试也是一样的不管是UI/接口测试都是一样的,url、查询入参、请求方式:get、post,如果是post请求的body,登录后获取到的cookie、token,另有其他数据等等,一切不固定的都可以做参数化,但是不是一切都要做参数化。postman可以设置为全局变量大概情况变量,而其他需要使用的地方可以通过{{变量名}}去调用。而jmeter可以通过设置用户变量然后通过${变量名}去调用,其他工具也同理,一法通万法通。那么我们这里怎么做呢,我们之前使用过了设置文件base.ini传入参数,另有把参数先写在excel文件,yaml文件然后通过读取文件的方法读取然后传入需要用到的地方,那我们不是可以把获取到的数据生存到我们的文件中吗?是的可以!
先来看下文件使用的模式
 
r(读取)
w(写入)
a(追加)
 
存在:读取
存在:删除-->创建-->写入
存在:追加写入
不存在:报错
存在:创建-->写入
不存在:创建-->写入
+(可读写)
存在:读写
存在:删除-->创建-->读写
存在:追加读写
不存在:报错
存在:创建-->读写
不存在:创建-->追加读写
b(二进制)
以二进制读取文件
以二进制方式写入文件
以二进制方式追加写入文件
直接上代码
这是先从登录接口获取返回值
  1. yaml.dump(data, f)
复制代码
生存到token.yaml文件中,然后通过
  1. result = yaml.load(f, Loader=yaml.FullLoader)
复制代码
读取yaml文件中的值
  1. import unittestimport requestsimport osfrom ddt import ddt, file_data, unpackfrom common.getpath import data_pathimport jsonimport yamlpost_data = os.path.join(data_path, 'post_data.yaml')post_path2 = os.path.join(data_path, 'post_data2.yaml')token_path = os.path.join(data_path, 'token.yaml')@ddtclass parameter_association(unittest.TestCase):    @file_data(post_data)    @unpack  # 二次分解元组    def test_testcase1(self, **kwargs):        url = kwargs['url']        headers = {            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) \            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}        data = {"name": kwargs['name'],                "pwd": kwargs['pwd']                }        # 发送post请求        response = requests.post(url=url, headers=headers, data=data)        # 因为返回值是一个json字典一样的字符串:{"code": 200, "message": "登录乐成", "token": "@R_r18sQ8#"}        # 使用json.loads()就可以自动转为最符合的数据范例,然后从转换后的字典中取token 的值        token = json.loads(response.text)['token']        # 把需要存的数据布局界说好 我需要生存成- token: '@R_r18sQ8#'        data = [{'token': token}]        # 需要获取一个文件句柄,往文件中写入数据,然后关闭文件句柄使用,使用with as就不消file.close()        # w 写入模式 ,数据中有中文要加上编码encoding='utf-8'        with open(token_path, "w", encoding="utf-8") as f:            #            yaml.dump(data, f)        print(url)        print(response.text)    @file_data(post_path2)    @unpack  # 二次分解元组    def test_testcase2(self, **kwargs):        url = kwargs['url']        # r 读取模式        with open(token_path, "r+", encoding="utf-8") as f:            # 读取时要加上:Loader=yaml.FullLoader            result = yaml.load(f, Loader=yaml.FullLoader)            token = result[0]['token']        data = {"name": kwargs['name'],                "token": token                }        response = requests.post(url=url, data=data)        print(url)        print(data)        print(response.text)if __name__ == '__main__':    unittest.main()
复制代码
这是我们使用的一种方式,下期我们使用@classmethod使用一下
我就是谁人我,不一样的烟火,你看懂了吗?没有?反复敲一百遍你就懂了
别的别忘了扫码支持一下

 

来源:https://blog.csdn.net/u011640418/article/details/111999768
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )