企业地址管理系统,wordpress优化0sql,网站的优势,wordpress 文章型同学们在做pytest接口自动化时#xff0c;会遇到一个场景就是不同的测试用例需要有一个登录的前置步骤#xff0c;登录完成后会获取到token#xff0c;用于之后的代码中。首先我先演示一个常规的做法。
首先在conftest定义一个login的方法#xff0c;方法返回token
pytes…同学们在做pytest接口自动化时会遇到一个场景就是不同的测试用例需要有一个登录的前置步骤登录完成后会获取到token用于之后的代码中。首先我先演示一个常规的做法。
首先在conftest定义一个login的方法方法返回token
pytest.fixture(scopefunction)
def login():header {Content-Type: application/json}data {username: test,password: test}login_info requests.post(urlhttp://.../login,jsondata).json()return login_info[token]
2.在测试用例方法中引入这个方法所有用到token都需要使用login这个方法。
def test_user(login):token login # 通过login获取token......
def test_address(login):token login # 通过login获取token......
通过上面的方法可以解决接口使用token的需求不过这么做每次都会先执行login接口有没有一种方法可以只执行一次login接口后面的接口就不调用login接口了呢。经过老武测试其实是可以做到的。
思路login接口使用缓存当有token的时候就使用token就不调用login接口了如果没有则调用login接口再把token缓存起来。
那需要对上面login的方法进行改造增加save_token方法将token存起来。引入pickle模块用来写数据。
import pickle
pytest.fixture(scopefunction)
def login():......# 增加缓存方法save_token(login_info[token])return login_info[token]def save_token(token):# login_path为目录中一个存放token的文件路径自己定义。with open(login_path, wb) as f:pickle.dump(login_info, f)f.close()
上面代码完成了token的写入当没有token的时候token写入到文件中。如果有token我们就不需要执行登录操作直接使用文件中的token这个时候代码需要继续改造。方法开始时判断当前是否存在保存token的文件如果有则获取token不再执行登录的操作。再增加一个读取文件内容的方法get_login_info
import pickle
pytest.fixture(scopefunction)
def login():if os.path.exists(login_info):return get_login_info(login_info)else:......# 增加缓存方法save_token(login_info[token])return login_info[token]
# 增加一个读取文件的方法
def get_login_info():with open(login_path, rb) as f:data pickle.load(f)f.close()return data
以上工作已经完成了90%再来个收尾就完美了。每次执行用例结束后把存token文件删除不然生成了一个token代码判断token文件存在就不会去调用登录接口。token一但过期用例就会执行失败。
在conftest定义一个方法每次执行用例都清理一下token文件。要注意级别是session级别哦。
pytest.fixture(scopesession, autouseTrue)
def clear_login_file():if os.path.exists(login_path):logger.info(清理token文件)os.remove(login_path)
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 软件测试面试小程序
被百万人刷爆的软件测试题库谁用谁知道全网最全面试刷题小程序手机就可以刷题地铁上公交上卷起来
涵盖以下这些面试题板块 1、软件测试基础理论 2、web,app接口功能测试 3、网络 4、数据库 5、linux 6、web,app接口自动化 7、性能测试 8、编程基础9、hr面试题 10、开放性测试题11、安全测试12、计算机基础 这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你