UnitTest与数据驱动及测试框架设计模式

UnitTest

通过直接导入UnitTest包即可实现: import unittest

是python库自带的自动化测试框架

主要用于管理测试用例和实现数据驱动

 

在nuittest 中所有的测试用例 都是基于 test_ 基于前缀来实现的 如果不写的话 那么它只是一个普通的函数

unitest 会自动识别执行 test_ 为测试用例

简单小实例  引入公代码关键字驱动脚本 https://www.cnblogs.com/sunzzc/p/13375537.html :

import unittest
from web_ui.my_keywords import TestKeyWords
import time

class Test_For_sun(unittest.TestCase):

# 前置条件 每条测试用例运行之前执行
def setUp(self):
print('执行前')


# 后置条件 每条测试用例运行之后执行
def tearDown(self):
print('执行后')

# 测试用例1
def test_1(self):

# 对类传入 url 已经浏览器
sr = TestKeyWords('http://www.baidu.com', 'chrome')

# 传入 定位方法 元素属性 已经输入内容
sr.inupt_text('id', 'kw', '老祝头')
# 点击方法
sr.click_element('id', 'su')
time.sleep(2)

# 测试用例2
def test_2(self):
sr = TestKeyWords('http://www.baidu.com', 'chrome')
sr.inupt_text('id', 'kw', '老祝头之夜的钢琴曲第五篇')
time.sleep(2)
sr.click_element('id', 'su')


if __name__ == '__main__':
unittest.main()

前置条件 SetUp 进行框架优化

import unittest
from web_ui.my_keywords import TestKeyWords
import time

class Test_For_sun(unittest.TestCase):

# 前置条件 每条测试用例运行之前执行
def setUp(self):
     print('执行前进行实例化 url')
self.sr = TestKeyWords('http://www.baidu.com', 'chrome')


# 后置条件 每条测试用例运行之后执行
def tearDown(self):
print('执行后释放资源')
self.sr.quit_browser()

def test_1(self):
self.sr.inupt_text('id', 'kw', '老祝头')
self.sr.click_element('id', 'su')
time.sleep(2)

def test_2(self):

self.sr.inupt_text('id', 'kw', '老祝头之夜的钢琴曲第五篇')
time.sleep(2)
self.sr.click_element('id', 'su')

if __name__ == '__main__':
unittest.main()

quit与close的区别:

quit 是关闭浏览器,并且关闭ChromeDriver进程

close 是关闭当前的标签页不会关闭进程

 

数据驱动:

将代码与数据进行分离,单纯由数据组成文件,再由文件来驱动关键字,最终实际整个自动化的流程

读取到数据,基于固定格式的数据内容进行拼接 拼接后的内容作为关键字所需要的参数 进行传入,从而执行对应

的关键字,再将结果与预期结果进行对比,从而获得单条测试用例是否通过的结果

 

下载包 ddt数据驱动

 

 

 

 

如果传入两个不同参数 ddt 会以list形式传递 如果不导入unpack解包的话 会自动默认集合里面是一个整体 所以会报错

所以要unpack 进行对集合二次分解 即可解决

示例:

import unittest
from web_ui.my_keywords import TestKeyWords
import time
# 导入数据驱动包 引用data传参
from ddt import ddt,data,unpack


# ddt 数据驱动的测试模块 用装饰器的模式来实现
@ddt()
class Test_For_sun(unittest.TestCase):

def setUp(self):
self.sr = TestKeyWords('http://www.baidu.com', 'chrome')

def tearDown(self):
self.sr.quit_browser()

# 引用data 对测试用例的传参 传接函数形参
@data(['id','老祝头'],['id','老祝头之夜的钢琴曲第五篇'])
# unpack 进行unittest 修复bug
@unpack
def test_1(self,locator,input_value):
self.sr.inupt_text(locator, 'kw', input_value)
self.sr.click_element('id', 'su')
time.sleep(2)

if __name__ == '__main__':
unittest.main()

 

posted @ 2020-07-25 11:55  老祝头  阅读(381)  评论(0编辑  收藏  举报