关键知识点
- 类的定义里面,如果没有 "def init(self)"方法, 等同于下面
def __init__(self):
pass
-
继承类里面的访问方法:
先子类,后父类 -
类变量,实例变量
-
静态函数,类函数
问题
- 没有__init__文件可以导入
常见问题
如果看到模块无法导入,而模块真实存在,检查点:1. 这个目录有没有__init__.py, 2. src在不在sys.path, 通过答应print(sys.path)来做debug
ImportError: No module named testimport
import sys
sys.path.append('yourdir')
unittest编写规范:
测试模块首先 import unittest
测试类必须继承 unittest.TestCase
测试方法必须以“test_”开头
模块名字,类名没有要求
pytest 编写规范
测试文件以 test_ 开头(以 test 结尾也可以)
测试类以 Test 开头,并且不能带有 init 方法
测试函数以 test 开头
pycharm里面配置unittest 作为testrunner
pytest 插件:
pytest-sugar==0.9.2
pytest-rerunfailures==5.0
pytest-ordering==0.6
pytest-instafail==0.4.1
pytest-datafiles==2.0
pytest-assume==1.2.2
allure-pytest==2.6.2
pytest==3.8.0
selenium==3.4.1
Pillow==5.4.1
requests==2.18.4
pip install pytest-sugar
pytest参数化:
@pytest.mark.parametrize(“x”, [(1),(2),(6)])
pytest 重新跑失败的测试用例
pytest --reruns 3 src/testcases/api/test_pyexample_rerun.py
作业
对下面测试方法使用pytest的rerun, 参数化方法来实现自动化测试
#! /usr/bin/env python
#coding=utf-8
import random
def bubble_sort(nums):
for i in range(len(nums)-1):
for j in range(len(nums)-i-1):
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
return random.choice([nums,None,10])