一站式
企业服务平台
132-8122-9158

ui自动化测试数据拆分(基于json和yaml的ui自动化测试)

广告位招租
联系电话:13518188210

对UI进行自动化测试时,需要将测试所用数据从文档中分离出来,若只是简单地写入测试模块,并不是很好地设计,因此无论哪种自动化测试都要对数据进行拆分为了实现这个目的,我们可以通过一些方法将它们分开来。而这些方法就包括了JSON,YAML以及Java等相关技术。JSON就是一种比较典型的方式所以本文研究了基于JSON和YAML的UI自动化测试的方法

JSON库多用于序列化和反序列化,尤其适用于API自动化测试,序列化与反序列化都是知识体系内技术栈必须具备的系统所以对于JSON库的研究就显得非常重要了。我们知道,json库是一种比较常用的数据库语言,它有很多优点,比如结构清晰,容易维护等等当然,我们可以对文档做序列话与反序列化,对文档做序列化可简单理解为对第三方数据写入文档,用JSON库中方法有dump()法,则对文档做反序列化可理解为从文档读取数据、用JSON库load()法,以下主要对UI自动化测试数据做拆分,具体安排如下:

importunittestfromparameterizedimportparameterized,paramfromseleniumimportwebdriverimporttimeastclassAddTest(unittest.TestCase):defsetUp(self)-None:self.driver=webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(30)self.driver.get("https://mail.sina.c_m.cn/#")deftearDown(self)-None:self.driver.quit()param(,,"请输入邮箱名"),param("srtSA","saert","您输入的邮箱名格式不正确"),param("aserSDAsd@sina.c_m","asdfrty","登录名或密码错误")])deftest_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)div=self.driver.find_element_by_xpath("/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]")assertdiv.text==resultif__name__=="__main__":unittest.main(verbosity=2)

从如前所述文件可看出,我们可将测试数据从JSON文件里分离出来,所分离出来的数据如下:

{"data":[{"username":,"password":,"text":"请输入邮箱名"},{"username":"srtSA","password":"saert","text":"您输入的邮箱名格式不正确"},{"username":"aserSDAsd@sina.c_m","password":"asdfrty","text":"登录名或密码错误"}]}

改进测试脚本如下:

importunittestfromparameterizedimportparameterized,paramfromseleniumimportwebdriverimporttimeastimportjsondefreadJson():returnjson.load(open("sina.json"))["data"]classAddTest(unittest.TestCase):defsetUp(self)-None:self.driver=webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(30)self.driver.get("https://mail.sina.c_m.cn/#")deftearDown(self)-None:self.driver.quit()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"])])deftest_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)div=self.driver.find_element_by_xpath("/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]")assertdiv.text==resultif__name__=="__main__":unittest.main(verbosity=2)

在这里我们展示了将测试数据保存在YAML文件中,并将其分离出的内容如下

username:password:text:"请输入邮箱名"username:"srtSA"password:"saert"text:"您输入的邮箱名格式不正确"username:"aserSDAsd@sina.c_m"password:"asdfrty"text:"登录名或密码错误"

改进测试脚本如下:

importunittestfromparameterizedimportparameterized,paramfromseleniumimportwebdriverimporttimeastimportjsonimportyamldefreadJson():returnjson.load(open("sina.json"))["data"]defreadYaml():withopen("sina.yaml")asf:returnlist(yaml.unsafe_load_all(f))classAddTest(unittest.TestCase):defsetUp(self)-None:self.driver=webdriver.Chrome()self.driver.maximize_window()self.driver.implicitly_wait(30)self.driver.get("https://mail.sina.c_m.cn/#")deftearDown(self)-None:self.driver.quit()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"])])deftest_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)div=self.driver.find_element_by_xpath("/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]")assertdiv.text==resultif__name__=="__main__":unittest.main(verbosity=2)

如前所述,详细展示在UI进行自动化测试时,可将所用测试数据从JSON文件与YAML文件中分离出来,从而实现数据分离,旨在使测试变得更容易、更有效

赞(10) 联系作者
未经允许不得转载:【聚禄鼎】一站式企业服务平台 » ui自动化测试数据拆分(基于json和yaml的ui自动化测试)

评论 抢沙发

让我们一起创建更加美好的网络世界

本站部分资源来自于网络收集,若侵犯了你的隐私或版权,请及时联系我们删除有关信息!

扫码添加站长微信

扫码添加小编微信

登录

找回密码

注册