导入模块
import 模块名
#使用模块
模块名.工具名
# 举例
import random
import json
random.randint(a, b)
json.load()
json.dump()
from 模块名 import ⼯具名
# 使⽤
⼯具名 # 如果是函数和类需要加括号
# 举例
from random import randint
from json import load, dump
randint(a, b)
load()
dump()
快捷键:alt + Enter
对于导⼊的模块和⼯具可以使⽤
as
关键字给其起别名
注意: 如果起别名,原来的名字就不能⽤了, 只能使⽤别名
__name__ 的作用
1. 每个代码⽂件都是⼀个模块
2. 在导⼊模块的时候, 会执⾏模块中的代码(三种⽅法都会)
3. __name__ 变量
3.1 __name__ 变量 是 python 解释器⾃动维护的变量
3.2 __name__ 变量,如果代码是直接运⾏, 值是 "__main__"
3.3 __name__ 变量, 如果代码是被导⼊执⾏, 值是 模块名(即
代码⽂件名)
在代码⽂件中, 在被导⼊时不想被执⾏的代码,可以写在 if
__name__ == "__main__": 代码的缩进中
def add(a,b):
return a+b
if __name__ == '__main__':
print('在代码中调用函数')
print(add(1,2))
print(add(10,20))
print(__name__)
else:
pass
import tools
print(tools.add(100, 200))
代码练习
1. 定义⼀个模块 tools.py
2. 在模块中定义⼀个函数, func, 输出 '我是 tools 模块中
的 funn 函数'
3. 在模块中定义⼀个类, Dog, 具有属性 name, age, ⽅法
play, 输出 'xx 在快乐的玩耍'
4. 新建⼀个代码⽂件, 调⽤ tools 模块中的 func 函数 并创
建⼀个 Dog 类的对象, 调⽤ play ⽅法
def func():
print('我是tools模块中的func函数')
class Dog:
def __init__(self,name,age):
self.name = name
self.age = age
def play(self):
print(f"{self.name}在快乐玩耍")
import tools
tools.func()
dog = tools.Dog('小黑',2)
dog.play()
包(package)
在 Python 中, 包 是⼀个⽬录, 只不过在这个⽬录存在⼀个⽂
件 __init__.py(可以是空的)
UnitTest框架
作用:
1. 能够组织多个⽤例去执⾏
2. 提供丰富的断⾔⽅法(让程序代码代替⼈⼯⾃动的判断预期
结果和实际结果是否相符)
3. 能够⽣成测试报告
TestCase
TestCase(测试⽤例): 每个 TestCase(测试⽤例) 都是⼀个代码⽂
件, 在这个代码⽂件中来书写真正的⽤例代码
1. 导包 (unittest)
2. ⾃定义测试类
3. 在测试类中书写测试⽅法
4. 执⾏⽤例
"""
代码的⽬的: 学习 TestCase(测试⽤例)模块的书写⽅法
"""
import unittest
class TestDemo(unittest.TestCase):
def test_method1(self):
print('测试方法1')
def test_method2(self):
print('测试方法2')
TestSuite
TestSuite(测试套件):⽤来管理组装(打包)多个TestCase(测试⽤例) 的
TestRunner
TestRunner(测试执⾏,测试运⾏):⽤来执⾏TestSuite(测试套件)的
TestSuite & TestRunner
"""
学习 TestSuite 和 TestRunner 的使⽤
"""
# 1. 导包(unittest)
import unittest
from Test.Day09.测试用例书写.test01_TestCase1 import TestDemo1
from Test.Day09.测试用例书写.test01_TestCase2 import TestDemo2
# 2. 实例化(创建对象)套件对象
# ⽅式⼀, 套件对象.addTest(测试类名('⽅法名'))
suite = unittest.TestSuite()
suite.addTest(TestDemo1('test_method1'))
suite.addTest(TestDemo1('test_method2'))
suite.addTest(TestDemo2('test_method1'))
suite.addTest(TestDemo2('test_method2'))
# 4. 实例化运⾏对象
runner = unittest.TextTestRunner()
# 5. 使⽤运⾏对象去执⾏套件对象
runner.run(suite)
"""
学习 TestSuite 和 TestRunner 的使⽤
"""
# 1. 导包(unittest)
import unittest
from Test.Day09.测试用例书写.test01_TestCase1 import TestDemo1
from Test.Day09.测试用例书写.test01_TestCase2 import TestDemo2
# 2. 实例化(创建对象)套件对象
suite = unittest.TestSuite()
# ⽅式⼆ 将⼀个测试类中的所有⽅法进⾏添加
# 套件对象.addTest(unittest.makeSuite(测试类名))
suite.addTest(unittest.makeSuite(TestDemo1))
suite.addTest(unittest.makeSuite(TestDemo2))
# 4. 实例化运⾏对象
runner = unittest.TextTestRunner()
# 5. 使⽤运⾏对象去执⾏套件对象
runner.run(suite)
TestLoader
TestLoader(测试加载):功能是对 TestSuite(测试套件) 功能的补充, 管理组装(打包)多个TestCase(测试⽤例) 的
如果 TestCase 的代码文件有很多, (10 20, 30 )
1. 导包
2. 实例化测试加载对象并添加用例 ---> 得到的是 suite 对象
3. 实例化 运行对象
4. 运行对象执行套件对象
# unittest.TestLoader().discover('
用例所在的路径
', '
用例的代码文件名
')
Fixture
Fixture(测试夹具):书写在 TestCase(测试⽤例) 代码中, 是⼀个代码结构, 可以在每个⽅法
执⾏前后都会执⾏的内容
方法级别
在每个测试方法(用例代码) 执行前后都会自动调用的结构
类级别
在每个测试类中所有方法执行前后 都会自动调用的结构(在整个类中 执行之前执行之后个一次)
模块级别[了解]
在每个代码文件执行前后执行的代码结构
来源:黑马软件测试Python