selenium+python自动化测试--数据驱动
Posted 花非花,雾非雾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium+python自动化测试--数据驱动相关的知识,希望对你有一定的参考价值。
之前selenium+python自动化测试--登录 中,几个账号和密码登录就要写几个用例,感觉很麻烦~,所以下面介绍一下用数据驱动实现不同用例的登录。
话不多说,直接贴代码~~
文件名称:test_ddtlogin.py
import ddt
import unittest
from selenium import webdriver
from common.base import Base
testdata = [
{\'user\':\'\',\'psw\':\'\',\'exp\':\'请输入手机号码\'},
{\'user\':\'admin\',\'psw\':\'\',\'exp\':\'请输入密码\'},
{\'user\':\'\',\'psw\':\'666666\',\'exp\':\'请输入手机号码\'},
{\'user\':\'admin\',\'psw\':\'666666\',\'exp\':\'账号不存在\'}
]
@ddt.ddt
class Testddt(unittest.TestCase):
# 定位手机号
username = ("name", "loginName")
# 定位密码
psw = ("name", "loginPassWord")
# 定位登录按钮
loginbutton = ("id", "loginBtn")
# 定位提示信息
message = ("className", "toast-message")
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Firefox()
cls.baseddt = Base(cls.driver)
cls.driver.get("不愿透露姓名的url")
def setUp(self):
self.baseddt.clear(self.username)
self.baseddt.clear(self.psw)
@classmethod
def tearDownClass(cls):
cls.driver.quit()
# 加载测试数据
@ddt.data(*testdata)
def test_01(self,data):
username = data[\'user\']
password = data[\'psw\']
exp = data[\'exp\']
#输入手机号
self.baseddt.send(self.username,username)
#输入密码
self.baseddt.send(self.psw,password)
#点击登录按钮
self.baseddt.click(self.loginbutton)
#获取结果
result = self.baseddt.find(self.message).text
print("我是结果:", result)
self.assertEqual(result, exp)
if __name__ == \'__main__\':
unittest.main()
上面代码运行多次后,发现最后一个用例执行失败了,觉得可能是缓存问题,所以还是改成下面的代码:
import ddt
import unittest
from selenium import webdriver
from common.base import Base
testdata = [
{\'user\':\'\',\'psw\':\'\',\'exp\':\'请输入手机号码\'},
{\'user\':\'admin\',\'psw\':\'\',\'exp\':\'请输入密码\'},
{\'user\':\'\',\'psw\':\'666666\',\'exp\':\'请输入手机号码\'},
{\'user\':\'admin\',\'psw\':\'666666\',\'exp\':\'账号不存在\'}
]
@ddt.ddt
class Testddt(unittest.TestCase):
# 定位手机号
username = ("name", "loginName")
# 定位密码
psw = ("name", "loginPassWord")
# 定位登录按钮
loginbutton = ("id", "loginBtn")
# 定位提示信息
message = ("className", "toast-message")
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Firefox()
cls.baseddt = Base(cls.driver)
def setUp(self):
self.driver.get("不愿透露姓名的url")
def tearDown(self):
self.driver.delete_all_cookies()
@classmethod
def tearDownClass(cls):
cls.driver.quit()
# 加载测试数据
@ddt.data(*testdata)
def test_01(self,data):
username = data[\'user\']
password = data[\'psw\']
exp = data[\'exp\']
#输入手机号
self.baseddt.send(self.username,username)
#输入密码
self.baseddt.send(self.psw,password)
#点击登录按钮
self.baseddt.click(self.loginbutton)
#获取结果
result = self.baseddt.find(self.message).text
print("我是结果:", result)
self.assertEqual(result, exp)
if __name__ == \'__main__\':
unittest.main()
运行结果:
纯属个人思路,如有错误请在评论区指出,一定立即纠正。非常感谢~
读取文件操作请看下回分解 以上是关于selenium+python自动化测试--数据驱动的主要内容,如果未能解决你的问题,请参考以下文章 python Chrome + selenium自动化测试与python爬虫获取网页数据 python下的自动化测试--selenium 验证码输入问题