数据驱动和关键字驱动简单例子(登录)
数据驱动:程序和数据分离,测试数据存入一个文件中,脚本存入另一个文件中
公司项目为保密项目,地址使用xxx代替
数据文件:D:\\test\\loginData.txt
文件内容:
admin_cyl||123456a
admin_test||a123456
test_shi||a123456
代码:
#encoding=utf-8 import unittest from selenium import webdriver import time class VisitClosePlaceByIe(unittest.TestCase): def setUp(self): #启动Ie浏览器 self.driver = webdriver.Ie(executable_path = "D:\\IEDriverServer") def test_visitURL(self): with open("D:\\test\\loginData.txt") as fp: for line in fp: username,password = line.split("||") password = password.strip().decode("gbk") self.driver.get("xxx") self.driver.find_element_by_id("username") self.driver.find_element_by_id("username").send_keys(username) self.driver.find_element_by_id("password") self.driver.find_element_by_id("password").send_keys(password) self.driver.find_element_by_id("button") self.driver.find_element_by_id("button").click() time.sleep(3) #不加等待时间,则page_source获取的是登录页面的源代码 assert u"封闭学校管理平台" in self.driver.page_source ,"Keyword not in page" def tearDown(self): self.driver.quit() |
关键字驱动:将测试用例的执行步骤存放在文件中,每个步骤单独封闭成一个函数,以这个函数名作为关键字,将函数名及传参写入文件中,第个步骤对应一行文件
数据文件:D:\\test\\schoolLogin.txt
文件内容:
visitUrl||["xxx"]
find_ele||["username","admin_cyl"]
find_ele||["password","123456a"]
click_login||["button"]
assert_word||[u"封闭学校管理平台"]
代码:
school_login.py #encoding=utf-8 import unittest from selenium import webdriver import time class VisitSchool(unittest.TestCase): def setUp(self): #启动IE浏览器 self.driver = webdriver.Ie(executable_path="D:\\IEDriverServer") def visitUrl(self,url): #由于参数个数不一致,所以使用列表做为参数,再用eval将列表字符串转化为列表 url = eval(url) #打开网页 self.driver.get(url[0]) def find_ele(self,arg): arg = eval(arg) #定位输入框并输入值 self.driver.find_element_by_id(arg[0]).send_keys(arg[1]) #本来想用两个函数,一个定位,一个输入值,但是输入函数中无法使用定位,所以合并成一个函数 def click_login(self,id): id = eval(id) #定位按钮并点击 self.driver.find_element_by_id(id[0]).click() def assert_word(self,keyword): #等待3秒,以便页面加载,否则page_source是登录页面的 time.sleep(3) keyword = eval(keyword) #断言 assert keyword[0].strip() in self.driver.page_source, "Keyword not in page" def test_schoolLogin(self): with open("D:\\test\\schoolLogin.txt") as fp: for line in fp: action,data = line.split("||") action = action.strip() data = data.decode("gbk").strip() #拼接执行命令 exec("self."+action+"(u'"+data+"')") def tearDown(self): self.driver.quit() if __name__ == "__main__": unittest.main() |
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理