做百度糯米网站的团队,新媒体营销推广公司,公司网站备案,html5网站开发费用在UI的自动化测试中#xff0c;我们需要把测试使用到的数据分离到文件中#xff0c;如果单纯的写在我们的测试模块里面#xff0c;不是一个好的设计#xff0c;所以不管是什么类型的自动化测试#xff0c;都是需要把数据分离出来的。当然分离到具体的文件里面#xff0c;…
在UI的自动化测试中我们需要把测试使用到的数据分离到文件中如果单纯的写在我们的测试模块里面不是一个好的设计所以不管是什么类型的自动化测试都是需要把数据分离出来的。当然分离到具体的文件里面文件的形式其实有很多的这里主要说明JSON的文件和YAML的文件在UI自动化测试中的应用。
一、JSON文件
JSON库主要应用于序列化以及反序列化中特别是在API的自动化测试中序列化以及反序列化是知识体系里面必须需要掌握的技术栈的体系。当然我们也是可以针对文件进行序列话和反序列化的处理针对文件的序列化可以简单地理解为就是把第三方的数据写到文件里面使用JSON库里面的方法是dump()方法那么针对文件的反对序列化可以理解为是从文件中读取数据使用到的JSON库里面的load()的方法下面主要是针对UI自动化测试的数据进行分离具体代码为
import unittest
from parameterized import parameterized,param
from selenium import webdriver
import time as t#parameterized是参数化库class AddTest(unittest.TestCase):def setUp(self) - None:self.driverwebdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(30)self.driver.get(https://mail.sina.com.cn/#)def tearDown(self) - None:self.driver.quit()parameterized.expand([param(,,请输入邮箱名),param(srtSA,saert,您输入的邮箱名格式不正确),param(aserSDAsdsina.com,asdfrty,登录名或密码错误)])def test_sina_email(self,username,password,result):t.sleep(2)self.driver.find_element_by_id(freename).send_keys(username)t.sleep(2)self.driver.find_element_by_id(freepassword).send_keys(password)t.sleep(2)self.driver.find_element_by_link_text(登录).click()t.sleep(3)divself.driver.find_element_by_xpath(/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1])assert div.textresultif __name__ __main__:unittest.main(verbosity2)
在如上的文件中可以看到我们可以把测试的数据分离到JSON文件中分离的数据具体为
{data:[{username: ,password: ,text: 请输入邮箱名},{username: srtSA,password: saert,text: 您输入的邮箱名格式不正确},{username: aserSDAsdsina.com,password: asdfrty,text: 登录名或密码错误}]
}
完善后的测试脚本为
import unittest
from parameterized import parameterized,param
from selenium import webdriver
import time as t
import jsondef readJson():return json.load(open(sina.json))[data]class AddTest(unittest.TestCase):def setUp(self) - None:self.driverwebdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(30)self.driver.get(https://mail.sina.com.cn/#)def tearDown(self) - None:self.driver.quit()parameterized.expand([param(readJson()[0][username],readJson()[0][password],readJson()[0][text]),param(readJson()[1][username],readJson()[1][password],readJson()[1][text]),param(readJson()[2][username],readJson()[2][password],readJson()[2][text])])def test_sina_email(self,username,password,result):t.sleep(2)self.driver.find_element_by_id(freename).send_keys(username)t.sleep(2)self.driver.find_element_by_id(freepassword).send_keys(password)t.sleep(2)self.driver.find_element_by_link_text(登录).click()t.sleep(3)divself.driver.find_element_by_xpath(/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1])assert div.textresultif __name__ __main__:unittest.main(verbosity2)
现在我也找了很多测试的朋友做了一个分享技术的交流群共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源没人解答问题坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化性能安全测试开发等等方面有一定建树的技术大牛
分享他们的经验还会分享很多直播讲座和技术沙龙
可以免费学习划重点开源的
qq群号110685036 二、YAML文件
下面我们演示把测试数据存储到YAML文件里面分离出来的文件内容为
username:
password:
text: 请输入邮箱名---
username: srtSA
password: saert
text: 您输入的邮箱名格式不正确---
username: aserSDAsdsina.com
password: asdfrty
text: 登录名或密码错误
完善后的测试脚本为
import unittest
from parameterized import parameterized,param
from selenium import webdriver
import time as t
import json
import yamldef readJson():return json.load(open(sina.json))[data]def readYaml():with open(sina.yaml) as f:return list(yaml.unsafe_load_all(f))class AddTest(unittest.TestCase):def setUp(self) - None:self.driverwebdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(30)self.driver.get(https://mail.sina.com.cn/#)def tearDown(self) - None:self.driver.quit()parameterized.expand([param(readYaml()[0][username],readYaml()[0][password],readYaml()[0][text]),param(readYaml()[1][username],readYaml()[1][password],readYaml()[1][text]),param(readYaml()[2][username],readYaml()[2][password],readYaml()[2][text])])def test_sina_email(self,username,password,result):t.sleep(2)self.driver.find_element_by_id(freename).send_keys(username)t.sleep(2)self.driver.find_element_by_id(freepassword).send_keys(password)t.sleep(2)self.driver.find_element_by_link_text(登录).click()t.sleep(3)divself.driver.find_element_by_xpath(/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1])assert div.textresultif __name__ __main__:unittest.main(verbosity2)
如上详细的演示了在UI的自动化测试中我们可以把使用到的测试数据分离到JSON文件和YAML的文件这样达到了数据的分离目的是让测试更加简单和高效。
敲字不易如果此文章对你有帮助的话点个赞收个藏给作者一个鼓励。也方便你下次能够快速查找。