自动化测试核心技能:数据分离实战解析(附Python+JSON完整代码)
大家好我是搞自动化的大飞最近有小伙伴在后台问我“看了好多自动化测试的文章都在讲数据分离到底是啥啊”说实话我刚开始接触自动化测试那会儿也懵。什么数据驱动、关键字驱动、Page Object一堆名词砸过来脑子直接宕机。后来自己做项目踩了几次坑才慢慢摸清楚——其实这东西很简单数据分离到底是个啥所谓的数据分离就是把你的测试数据单独放到一个文件夹里代码里面只写逻辑。用的时候代码去读那个文件拿数据就行了。举个例子你就懂了。假如你写了一个登录脚本用户名密码直接写在代码里像这样driver.find_element(By.NAME,username).send_keys(john)driver.find_element(By.NAME,password).send_keys(demo)看起来没啥问题是吧好第二天产品过来说“大飞测试账号换了啊改成admin了。”你怎么办打开代码找到这两行改了保存。如果只有这一个脚本还行。但如果你有几十个脚本都用到了这个账号呢你得一个一个打开改改到怀疑人生。数据分离就是帮你避开这种尴尬的。把数据抽出来放到外面代码只负责干活。以后要改数据直接改外面的文件就行代码一行都不用动。而且更爽的是不懂代码的人也能改。你给测试同事丢一个json文件说“改这里就行”他打开一看就懂了不需要搞懂你的代码逻辑。一个小Demo一看就明白光说理论不好理解咱们直接上手一个小的Demo项目这里我用一个开源测试网站来做演示https://parabank.parasoft.com/默认账号密码是用户名john密码demo先搭个架子新建一个项目文件夹就叫test01吧。里面放三个文件test01/ ├── login.json # 存测试数据的 ├── read_json.py # 读数据的工具 └── test_login.py # 测试脚本写读数据的工具先看read_json.pyimportosimportjsonclassReadJson:defread_json(self,file_name):# 项目目录BASE_PATHos.path.dirname(__file__)# json文件目录file_pathBASE_PATHos.sepfile_name# 读取json文件withopen(file_path,r,encodingutf-8,errorsignore)asfp:# 返回列表化json数据returnlist(json.load(fp).values())if__name____main__:elReadJson()el.read_json(login.json)这段代码干了几件事动态获取当前项目的路径不管你把这个项目挪到哪都能自动找到用with open打开json文件读数据把数据转成列表返回这里有个坑要提醒一下一定要用return把数据传出去。之前有个小伙伴照着抄结果发现调用的时候拿不到数据折腾了半天发现是忘了写return返回了个空值把数据放进去然后看login.json{url:https://parabank.parasoft.com/,name:john,password:demo}很简单对吧就是把网址、用户名、密码全塞进去了。写测试脚本最后是test_login.pyfromseleniumimportwebdriverfromtimeimportsleepfromselenium.webdriver.common.byimportByfromread_jsonimportread_json# 启动浏览器驱动driverwebdriver.Chrome()# 读取数据dataread_json(login.json)# 输入测试地址driver.get(data[0])sleep(3)# 找到用户名driver.find_element(By.NAME,username).send_keys(data[1])sleep(1)# 找到密码driver.find_element(By.NAME,password).send_keys(data[2])# 点击登录driver.find_element(By.CSS_SELECTOR,[valueLog In]).click()sleep(2)# 关闭浏览器driver.quit()看到没data[0]就是网址data[1]是用户名data[2]是密码。脚本里面一个硬编码的数据都没有。以后账号换成admin了怎么办打开login.json把name: john改成name: admin完事。这只是个开始上面这个demo确实很简单但数据分离的价值在项目变大的时候才能真正体现出来。想象一下你的测试用例有几百条涉及不同的账号、不同的测试数据、不同的环境配置。如果所有数据都散落在代码里维护起来就是一场噩梦。但如果你用了数据分离测试数据统一放一个目录谁都能改开发环境和测试环境的切换只需要改配置文件非开发人员也能参与数据维护跑多组数据的时候循环读文件就行了说白了就是一句话让数据归数据代码归代码。当然了除了json你还可以用yaml、excel、csv等等格式道理都一样。用什么格式看你团队的偏好和场景。今天就到这有搞不明白的地方评论区留言咱们下期见企业级UI自动化测试框架SeleniumPytestPO数据分离直接拿去用记得回复【企业代码】免费领取哦