天天看点

Selenium自动化-Unittest基础语法

单元测试

通过调用函数,输入参数测试。

def add(a,b):
	c = a + 2 * b
    return c


if __name__ == "__main__"
	print(add(2,3))
           

使用例子:

import unittest


class IntegerArithmeticTestCase(unittest.TestCase):
    def testAdd(self):  # test method names begin with 'test'
        self.assertEqual((1 + 2), 3)
        self.assertEqual(0 + 1, 1)

    def testMultiply(self):
        self.assertEqual((0 * 10), 0)
        self.assertEqual((5 * 8), 40)


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

脚本执行顺序

1.用例之间不要存在依赖关系,每个用例都能单独运行

2.用例之间不要相互调用,需要电泳的公共方法可以写成方法去调用

def setUp(self):
	# 每个用例执行之前,先执行一次
    
def tearDown(self):
    # 每个用例执行之后,调用一次

@classmethod
def setUpClass(cls):
    # 用例前,只执行一次
  
@classmethod
def tearDownClass(cls):
    # 用例后,只执行一次
           

assert断言

方法 检查
assertEqual(a,b) a == b
assertNotEqual(a,b) a != b
assertTrue(x) bool(x) is True
assertFalse(x) bool(x) is False
assertIs(a,b) a is b
assetIsNot(a,b) a is not b
assertIsNone(x) x is not None
assertIn(a,b) a in b
assertNotIn(a,b) a not in b
assertIsInstance(a, b) isinstance(a,b)
assertNotIsInstance(a, b) not isinstance(a,b)
def test_01(self):
	a = 2
	b = 3
	self.assertTrue(a == b)
           

__name__和__main__

* 模块是对象,并且所有的模块都有一个内置属性 __name__

* 如果模块是被直接执行, _name__的值为 ‘_main__’

print(__name__)
>>> __main__
           

* 如果模块是被导入, __name__的值模块的名字

import unittest
print(unittest.__name__)
>>> unittest
           

* if ___name__和 ‘’_main__’’ 我们简单的理解就是: 如果模块是被直接运行的,则代码块被运行,如果模块是被导入的,则代码块不被运行。

# 第二种运行方法
if __name__ == '__main__':
    unittest.main()
           

函数

定义规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号**()**。
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

语法:

def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]