python+selenium之断言Assertion
一、断言方法
断言是对自动化测试异常情况的判断。
# -*- coding: utf-8 -*-
from selenium import webdriver
import unittest
import os,sys,time
import HTMLTestReport #登录
driver =webdriver.Firefox() current_time = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
current_time1 = time.strftime("%Y-%m-%d", time.localtime(time.time()))
print(current_time )
print(current_time1 )
# 必须打印图片路径HTMLTestRunner才能捕获并且生成路径,\image\**\\**.png 是获取路径的条件,必须这样的目录
#设置存储图片路径,测试结果图片可以按照每天进行区分 pic_path = '.\\result\\image\\' + current_time1+'\\' + current_time +'.png'
print(pic_path)
time.sleep(5) #通过if进行断言判断
driver.get("https://baidu.com/")
print(driver.title)
driver.save_screenshot(pic_path)
if u'百度一下,你就知道' == driver.title:
print ('Assertion test pass.')
else:
print ('Assertion test fail.') #通过try抛出异常进行断言判断
driver.get("https://baidu.com/")
driver.save_screenshot(pic_path)
try:
assert u'百度一下,你就知道' == driver.title
print ('Assertion test pass.')
except Exception as e:
print ('Assertion test fail.', format(e)) time.sleep(5)
driver.quit()
方法一,是利用python中Assert方法,采用包含判断,方法二是通过if方法,采用完全相等方法,建议选择第一种方法
这u代表unicode的意思,由于我们这里采用了python 2, 如果你使用pyn3 就不需要,在Python3中,字符串默认采用unicode存储。
二、断言方法
在执行用例的过程中,最终用例是否通过,是通过判断测试的到的实际结果与预测结果是否相等绝顶的。unittest框架的TestCase类提供下面这些方法用于测试结果的判断。
from calculator import Count
import unittest class TestCount (unittest.TestCase):
def setUp(self):
print("test start") def test_add(self):
j = Count (2, 4)
self.assertEqual (j.add (), 6) def test_add2(self):
i = Count (2,9)
self.assertEqual (i.add (), 11) def tearDown(self):
print("test end") if __name__ == '__main__':
# unittest.main ()
suite = unittest.TestSuite()
suite.addTest(TestCount('test_add2'))
suite.addTest (TestCount ('test_add'))
runner = unittest.TextTestRunner()
runner.run(suite)
| 方法 | 检查 | 版本 |
| assertEqual(a,b) | a==b | |
| assertNotEqual(a,b) | a!=b | |
| asserTrue(x) | bool(x) is true | |
| asserFalse(x) | bool(x) is False | |
| assertIs(a,b) | a is b | |
| assertIsNot(a,b) | a is not b | |
| assertIsNone(x) | x is None | |
| assertIsNoneNot(x) | x is not None | |
| assertIn(a,b) | a in b | |
| assertInNot | a not in b | |
| assertIsInstance(a,b) | isinstance(a,b) | |
| assertNotIsInstance(a,b) | not isinstance (a,b) |
***assertEqual(first ,second ,msg =None)
断言第一个参数和第二个参数是否相等,如果 不相等则测试失败。msg为可选参数,用于定义测试失败时打印的信息。
import unittest class assertEqual1(unittest.TestCase):
def setUp(self):
number = input ("Enter a number:")
self.number = int (number) def test_case(self):
self.assertEqual (self.number, 10, msg='Your input is not 10!') def tearDown(self):
pass if __name__ == '__main__':
unittest.main ()
三、assertTrue与assertFalse
用于测试表达式是true还是false。
下面来实现判断一个数是否未数的功能,所谓的质数(又叫素数)是指只能被1和她本身整除的数。
def is_prime(n):
if n <= 1:
return False
for i in range (2, n):
if n % i == 0:
return False
else:
return True
from calculator import is_prime
import unittest class test (unittest.TestCase):
def setUp(self):
print("测试开始") def test_case(self):
self.assertTrue (is_prime(3), msg="Is not prime!") def tearDown(self):
print("测试结束") if __name__ == '__main__':
unittest.main ()
在调用is_prime()函数时分别传不同的值来执行测试用例,然后通过assertTrue()断言得到的结果进行判断。
四、assertIn(first,second,msg = None)与assertNotIn(first,second,msg = None)
注:断言第一个参数是否在第二个参数中,第二个表示参数是否包含第一个参数。
import unittest class test (unittest.TestCase):
def setUp(self):
print("测试开始") def test_case(self):
a = 'hello'
b = 'hello word!'
# self.assertIn (b, a, msg='a is not in b')
self.assertNotIn (a, b, msg='a is not in b') def tearDown(self):
print("测试结束") if __name__ == '__main__':
unittest.main ()
- assertIs(first,second,msg=None) 与assertIsNot(first,second,msg=None)
断言第一个参数和第二个参数是否为同一个对象。
2.assertIsNone(expr,msg = None)与assertIsNone(expr,msg = None)
断言表达式是否为None对象。
3.assertIsInstance(obj,cls,msg = None)与assertIsInstance(obj,cls,msg = None)
断言obj是否为cls的一个实例。
python+selenium之断言Assertion的更多相关文章
- Python+Selenium之断言对应的元素是否获取以及基础知识回顾
# coding=utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.maximize_window () ...
- python selenium测试用例断言
1.if ...else ...判断进行断言 #coding=utf-8 from time import * from selenium import webdriver "): driv ...
- Python中不尽如人意的断言Assertion
Python Assert 为何不尽如人意 Python中的断言用起来非常简单,你可以在assert后面跟上任意判断条件,如果断言失败则会抛出异常. >>> assert 1 + 1 ...
- 【转】Python中不尽如人意的断言Assertion
原文地址:Python中不尽如人意的断言Assertion Python Assert 为何不尽如人意 Python中的断言用起来非常简单,你可以在assert后面跟上任意判断条件,如果断言失败则会抛 ...
- selenium关于断言的使用
基本介绍: Selenium工具专门为WEB应用程序编写的一个验收测试工具. Selenium的核心:browser bot,是用JAVASCRIPT编写的. Selenium工具有4种:Seleni ...
- Selenium3 + Python3自动化测试系列五——常用断言Assertion
断言Assertion 验证应用程序的状态是否同所期望的一致. 常见的断言包括:验证页面内容,如标题是否为X或当前位置是否正确,或是验证该复选框是否被勾选. selenium 提供了三种模式的断言:a ...
- 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试
Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...
- 使用python selenium进行自动化functional test
Why Automation Testing 现在似乎大家都一致认同一个项目应该有足够多的测试来保证功能的正常运作,而且这些此处的‘测试’特指自动化测试:并且大多数人会认为如果还有哪个项目依然采用人工 ...
- python+selenium 自动化测试实战
一.前言: 之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过11一直没有更新博客,今天整理一下实战项目的代码共大家学习.(注:项目是针对我们公司内部系统的测试,只能内部网络访问, ...
随机推荐
- <正则吃饺子> :关于微信支付的简单总结说明(一)
关于支付,一直想参与开发,现在根据项目中已有及参见的微信开发文档,将自己对于微信开发的流程进行简单的总结,以备后用和帮助后来者. 一.相关官方文档 微信支付官方文档:https://pay.weixi ...
- [51nod1102]面积最大的矩形(单调栈||预处理)
题意:求序列上某区间最小值乘区间长度的最大值. 解题关键:很早就在<挑战程序设计竞赛>中见过了,单调栈模板题,注意弹栈时如何处理后面的元素. 法一:单调栈 #include<bits ...
- Linux下使用doxygen+vim生成c语言源程序文档的方法
1.安装 doxygen 有两种获得 doxygen 的方法.可以下载预编译的可执行文件,也可以从 SVN 存储库下载源代码并自己编译.清单 1 演示的是后一种方法. 清单 1. 安装和构建 doxy ...
- html解决的兼容问题
手机版不缩放 <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum ...
- 2014-10-31 NOIP模拟赛
10.30 NOIp 模拟赛 时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...
- Codevs 2765 隐形的翅膀
2765 隐形的翅膀 题目描述 Description 天使告诉小杉,每只翅膀都有长度,两只翅膀的长度之比越接近黄金分割比例(黄金分割比= 0.6180339887498949),就越完美. 现在 ...
- 使用CCProxy代理遇到的问题
第一种:打开CCProxy后,客户端电脑无法连接上. 解决方案:主机是否开启了360里面的局域网隐藏,这个一定要关闭,否则客户端无法找到主机.另外一种情况,主机关闭局域网隐藏之后,一直遭受ARP攻击, ...
- 关于APICloud使用心得(原创)
从最开始接触APICloud到现在已经有一段时间了.现在想说说自己对于APICloud开发移动端的想法,既有利又有弊. 以下都是我个人的观点. 先说优点吧: 1.APICloud平台文档.视频较多,很 ...
- Ruby: Case表达式
Ruby的case表达式有两种形式: 第一种形式接近于一组连续的if语句:它让你列出一组条件,并执行第一个为真的条件表达式所对应的语句. 第二种形式,在case语句的顶部指定一个目标,而每个when从 ...
- Delphi调用C# 编写dll动态库
Delphi调用C# 编写dll动态库 编写C#dll的方法都一样,首先在vs2005中创建一个“类库”项目WZPayDll, using System.Runtime.InteropServices ...