本章知识点:
1.如何使用模块unittest中的工具来为函数和类编写测试。
2.如何编写继承unittest.TestCase的类。
3.如何编写测试方法,以核实函数和类的行为符合预期。
4.如何使用方法setUp()来根据类高效地创建实例并设置其属性,以便在类的所有测试方法中都可使用它们。
习题:
11-1城市和国家
city_function.py
def get_city_information(city_name,country_name):
full_name = city_name + " " + country_name
return full_name.title()
test_cities.py
import unittest
from city_function import get_city_information
class NamesTestCase(unittest.TestCase):
def test_city_country(self):
formatted_name = get_city_information('santiago','chile')
self.assertEqual(formatted_name,'Santiago Chile')
unittest.main()
输出:
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
11-2人口数量
必不可少形参:population
city_function.py
def get_city_information(city_name,country_name,population):
full_name = city_name + ", " + country_name + " - population " + str(population)
return full_name.title()
test_cities.py
import unittest
from city_function import get_city_information
class NamesTestCase(unittest.TestCase):
def test_city_country(self):
formatted_name = get_city_information('santiago','chile') self.assertEqual(formatted_name,'Santiago Chile')
# if __name__=='__main__':
unittest.main()
输出:
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
可选形参:population
city_function.py
def get_city_information(city_name,country_name,population=1000000):
full_name = city_name + ", " + country_name + " - population " + str(population)
return full_name.title()
test_cities.py
import unittest
from city_function import get_city_information
class NamesTestCase(unittest.TestCase):
def test_city_country(self):
formatted_name = get_city_information('santiago','chile')
self.assertEqual(formatted_name,'Santiago, Chile - Population 1000000')
# if __name__=='__main__':
unittest.main()
输出:
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
传参测试
test_city_country_population.py
import unittest
from city_function import get_city_information
class NamesTestCase(unittest.TestCase):
def test_city_country(self):
formatted_name = get_city_information('santiago','chile',2000000)
self.assertEqual(formatted_name,'Santiago, Chile - Population 2000000')
# if __name__=='__main__':
unittest.main()
输出:
.
Running E:/PyCharm/code/test_city_country_population.py
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
11-3雇员
employee.py
class Employee():
def __init__(self,first_name,last_name,salary):
self.first_name = first_name
self.last_name = last_name
self.salary = salary
def give_raise(self,addtion = 1000):
self.salary += addtion
test_employee.py
import unittest
from employee import Employee
class TestEmployeeCase(unittest.TestCase):
def setUp(self):
self.my_employee = Employee('Huang','Yang',2000)
def test_give_default_raise(self):
self.my_employee.give_raise()
self.assertEqual(3000,self.my_employee.salary)
def test_give_custom_raise(self):
self.my_employee.give_raise(2000)
self.assertEqual(4000,self.my_employee.salary)
unittest.main()
输出:
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK