数据驱动和关键字驱动对比

数据驱动 和 关键字驱动

数据驱动和关键字驱动对比_第1张图片


数据驱动和关键字驱动对比_第2张图片


数据驱动和关键字驱动简单例子(登录)

数据驱动:程序和数据分离,测试数据存入一个文件中,脚本存入另一个文件中

公司项目为保密项目,地址使用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()


原文地址 :https://www.cnblogs.com/test-chen/p/10321164.html

你可能感兴趣的:(数据驱动和关键字驱动对比)