一、断言方法
断言是对自动化测试异常情况的判断。
#-*- coding: utf-8 -*-
from selenium importwebdriverimportunittestimportos,sys,timeimportHTMLTestReport#登录
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.titleprint ('Assertion test pass.')exceptException 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类提供下面这些方法用于测试结果的判断。
1 from calculator importCount2 importunittest3
4
5 classTestCount (unittest.TestCase):6 defsetUp(self):7 print("test start")8
9 deftest_add(self):10 j = Count (2, 4)11 self.assertEqual (j.add (), 6)12
13 deftest_add2(self):14 i = Count (2,9)15 self.assertEqual (i.add (), 11)16
17 deftearDown(self):18 print("test end")19
20
21 if __name__ == '__main__':22 #unittest.main ()
23 suite =unittest.TestSuite()24 suite.addTest(TestCount('test_add2'))25 suite.addTest (TestCount ('test_add'))26 runner =unittest.TextTestRunner()27 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为可选参数,用于定义测试失败时打印的信息。
1 importunittest2
3
4 classassertEqual1(unittest.TestCase):5 defsetUp(self):6 number = input ("Enter a number:")7 self.number =int (number)8
9 deftest_case(self):10 self.assertEqual (self.number, 10, msg='Your input is not 10!')11
12 deftearDown(self):13 pass
14
15
16 if __name__ == '__main__':17 unittest.main ()
三、assertTrue与assertFalse
用于测试表达式是true还是false。
下面来实现判断一个数是否未数的功能,所谓的质数(又叫素数)是指只能被1和她本身整除的数。
1 defis_prime(n):2 if n <= 1:3 returnFalse4 for i in range (2, n):5 if n % i ==0:6 returnFalse7 else:8 return True
1 from calculator importis_prime2 importunittest3
4
5 classtest (unittest.TestCase):6 defsetUp(self):7 print("测试开始")8
9 deftest_case(self):10 self.assertTrue (is_prime(3), msg="Is not prime!")11
12 deftearDown(self):13 print("测试结束")14
15
16 if __name__ == '__main__':17 unittest.main ()
在调用is_prime()函数时分别传不同的值来执行测试用例,然后通过assertTrue()断言得到的结果进行判断。
四、assertIn(first,second,msg = None)与assertNotIn(first,second,msg = None)
注:断言第一个参数是否在第二个参数中,第二个表示参数是否包含第一个参数。
1 importunittest2
3
4 classtest (unittest.TestCase):5 defsetUp(self):6 print("测试开始")7
8 deftest_case(self):9 a = 'hello'
10 b = 'hello word!'
11 #self.assertIn (b, a, msg='a is not in b')
12 self.assertNotIn (a, b, msg='a is not in b')13
14 deftearDown(self):15 print("测试结束")16
17
18 if __name__ == '__main__':19 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的一个实例。