selenium2

java 单元测试框架 白盒测试
testNG

1.unittest

功能测试单元框架(黑盒测试)
import unittest

各组件的关系:

在这里插入图片描述

TestCase:编写单元测试用例最常用用的类
编写一个类,继承unittest.TestCase,
test case单元测试用例

测试固件Test Fixture:
setup()第一个:测试前的准备工作

tearDown()最后一个:测试后的清理工作

测试套件:TestSuite 类来生成测试套件
testsuite单元测试用例的集合

addTest():把每个测试用例添加到测试套件中

2、批量执行测试用例

构建测试套件:
将测试用例加入到测试容器(套件)
容器:多个方法

多个文件,中的多个方法

用例添加到测试套件
def createsuit():
suite = unittest.TestSuite()
suite.addTest(bai1.Baidu1(“test_hao”))
suite.addTest(bai2.Me(“test_ds”))
return suite

suite = createsuit()
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)

创建测试套件
suite=unittest.TestSuit()

suite.addTest():将某一个用例加入测试套件

缺点:
1.需要导入所有的.py文件
addTest需要增加所有的testcase

makesuit():
把测试用例内所有的case组成的测试套件TestSuite
suite.addTest(unittest.makeSuite(bai1.Baidu1))
suite.addTest(unittest.makeSuite(bai2.Me))
return suite

TestLoader:创建类和模块的测试套件
suite1 = unittest.TestLoader().loadTestsFromTestCase(bai1.Baidu1)
suite2 = unittest.TestLoader().loadTestsFromTestCase(bai2.Me)
suite = unittest.TestSuite([suite1, suite2])
return suite

**discover:**把一个文件夹下某种类型的文件里面所有的测试用例加入测试套件

discover = unittest.defaultTestLoader.discover(’…/src0819’, pattern=‘bai*.py’, top_level_dir=None)
print(discover)
return discover

这里的verbosity 是一个选项, 表示测试结果的信息复杂度,有三个值:
0 ( 静默模式): 你只能获得总的测试用例数和总的结果比如总共100个,失败20 成功80
1 ( 默认模式): 非常类似静默模式只是在每个成功的用例前面有个“ . ” 每个失败的用例前面有个“F”
2 ( 详细模式): 测试结果会显示每个测试用例的所有相关的信息

3测试执行:TestRunner

0-9,A-Z,a-z

test_开头,系统默认执行
方法的执行顺序:字典顺序

忽略测试用例
@unittest.skip(“skipping”)

4、断言:判断

场景:预期结果与实际结果是否符合
如果给定的断言通过,测试会继续执行到下一行代码
如果断言失败,对应的case测试会立即停止或者生成错误信息(一般打印错误信息),不要影响到其他case执行

assertEqual()//不相等错误
assertNotEqual()//相等错误

火狐添加断言: 右键 --》assert

5.TestReport生成测试报告:

HTML报告:面试
1.创建存放HTML的文件夹:resultReport
sys.path[]路径集合
curpath = sys.path[0]

if not os.path.exists(curpath+’/resultreport’):
os.makedirs(curpath+’/resulterport’)

2.创建输出HTML报告的文件:文件的命名

now = time.strftime("%Y-%m-%d-%H %M %S", time.localtime(time.time()))

filename =curpath+’/resultreport’+now+‘resultreport.html’

3.浏览器打开文件
生成HTML报告
with open(filename, ‘wb’) as fp:
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"测试报告", description=u"用例执行情况", verbosity=2)
suite = createsuit()
runner.run(suite)

os.makedirs()//创建文件夹
time.strftime(,)//时间格式化
time.localtime()//本地化 年月日,时分秒
time.time()//获取时间戳 1970-01-01
with open()

6.错误截图:HTML报告的补偿

def savescerrnshot(self, driver, file_name):
if not os.path.exists(’./image’):
os.makedirs(’./image’)
now = time.strftime("%H%m%d-%H%M%S", time.localtime(time.time()))
#截图保存
driver.get_screenshot_as_file(’./image’+now+’-’+file_name)
time.sleep(5)

当前路径创建文件:get_screenshot_as_file()

7. 数据驱动:ddt

数据与代码分开
例如:百度搜索,输入英文,中文

直接操作一组数据,方法执行的次数

安装ddt
@ddt
@unpack

引入CSV
@ ddt//类名上面添加ddt

@unpack
映射到方法参数上
使用元组或者方法,列表,对应到多个参数上
@unittest.skip(“skipping”)
忽略

@data(,,)//装饰测试方法,参数是一系列的值
单变更:@data(‘selenium’,u’测试中文’,‘9999999999’)
一组变更:@unpack @data([3, 2], [4, 3], [5, 3])
text文件:@data(*getCsv(‘test_baidu_data.txt’))

@file_data()//装饰修饰方法,参数是文件名
json文件 每次读一行

@unittest.skip("skipping")
@data('selenium', u'欢天喜地七仙女')
def test_ba(self, value):
driver = self.driver
driver.get(self.base_url)
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys(value)
driver.find_element_by_id("su").click()
time.sleep(5)
@unittest.skip("skipping")
@unpack
@data(['杨幂', u'杨幂_百度搜索'], ['刘诗诗', u'刘诗诗_百度搜索'])
def test_du(self, value, expected_value):
driver = self.driver
driver.get(self.base_url)
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys(value)
driver.find_element_by_id("su").click()
time.sleep(5)
self.assertEqual(expected_value, driver.title, msg="结果不一致")
@unpack
@data(*getCsv('baidu1.txt'))
def test_ma1(self, value, expected_value):
driver = self.driver
driver.get(self.base_url)
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys(value)
driver.find_element_by_id("su").click()
time.sleep(5)
self.assertEqual(expected_value, driver.title, msg="结果不一致")
@file_data('ty.json')
def test_ma2(self, value):
driver = self.driver
driver.get(self.base_url)
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys(value)
driver.find_element_by_id("su").click()
time.sleep(5)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值