废料单元测试自动生成。
scrapy-autounit的Python项目详细描述
报废自动装置
scrapy autounit是一个为你的scrapy spider自动生成测试的工具。
它是怎么工作的?
scrapy autounit在运行spider时生成测试设备和测试用例。 测试fixture由spider产生的条目和请求生成,然后测试用例根据spider的回调来评估这些fixture。
scrapy autounit在scrapy项目根目录下为每个spider和回调生成fixture和测试。
下面是创建测试后项目的目录树示例:
my_project
├── autounit
│ ├── __init__.py
│ └── tests
│ ├── __init__.py
│ └── my_spider
│ ├── __init__.py
│ └── my_callback
│ ├── __init__.py
│ ├── fixture1.bin
│ ├── fixture2.bin
│ ├── test_fixture1.py
│ ├── test_fixture2.py
├── my_project
│ ├── __init__.py
│ ├── items.py
│ ├── middlewares.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ ├── __init__.py
│ └── my_spider.py
└── scrapy.cfg
安装
pip install scrapy_autounit
用法
将spider中间件添加到您的SPIDER_MIDDLEWARES
设置中(不需要特定顺序):
SPIDER_MIDDLEWARES={'scrapy_autounit.AutounitMiddleware':950}
生成测试
确保在您的设置中启用“刮削自动装置”:
AUTOUNIT_ENABLED=True
要生成fixture和测试,只需像往常一样运行spider,scrapy autounit将为您生成它们。
$ scrapy crawl my_spider
当spider完成时,将在项目根目录中创建一个目录autounit
,其中包含为您刚刚运行的spider生成的所有测试/设备(请参阅上面的目录树示例)。
如果您想update您的测试和设备,只需要再次运行spider。
运行测试
要运行测试,可以使用unittest
常规命令。
全部测试
$ python -m unittest
测试特定的蜘蛛
$ python -m unittest discover -s autounit.tests.my_spider
测试特定回调
$ python -m unittest discover -s autounit.tests.my_spider.my_callback
测试特定夹具
$ python -m unittest autounit.tests.my_spider.my_callback.test_fixture2
注意事项
请记住,只要打开AUTOUNIT_ENABLED
,每次运行spider测试/fixture时都会为其回调生成。
这意味着,如果您的测试/设备准备就绪,则应禁用此设置,以防止意外覆盖。
每次您想要重新生成测试时(例如,由于spider中的更改),您可以再次打开此选项并像往常一样运行spider。
autounit在请求的元词典中使用内部_autounit
键。在向meta添加数据时,避免在spider中使用/重写此键,以防止出现意外行为。
设置
$ python -m unittest autounit.tests.my_spider.my_callback.test_fixture2
请记住,只要打开AUTOUNIT_ENABLED
,每次运行spider测试/fixture时都会为其回调生成。
这意味着,如果您的测试/设备准备就绪,则应禁用此设置,以防止意外覆盖。
每次您想要重新生成测试时(例如,由于spider中的更改),您可以再次打开此选项并像往常一样运行spider。
autounit在请求的元词典中使用内部_autounit
键。在向meta添加数据时,避免在spider中使用/重写此键,以防止出现意外行为。
autounit\u已启用
将其设置为True
或False
以启用或禁用单元测试生成。
autounit_max_fixtures_per_回调
设置每个回调存储的最大数量的固件。Minimum: 10
Default: 10
autounit\u跳过的字段
设置要从测试回调项中跳过的字段列表。绕过每次运行时返回不同值的字段很有用。
例如,如果在spider中有一个字段始终设置为datetime.now()
,则可能需要将该字段添加到此列表中,以便在测试时跳过。否则,生成fixture时的值将不同于运行测试时的值,从而使测试失败。Default: []
autounit请求跳过字段
设置运行测试时要跳过的请求字段列表。
类似于autounit_skipped_字段,但应用于请求而不是项目。Default: []
autounit_excluded_头
设置要从请求记录中排除的标题列表。
出于安全原因,autounit在默认情况下已经排除了Authorization
和Proxy-Authorization
头,如果您想在设备中包含它们,请参见AUTOUNIT_INCLUDED_AUTH_HEADERS
Default: []
autounit_included_auth_头
如果要在设备中包含Authorization
或Proxy-Authorization
头,请将其中一个或两个添加到此列表中。Default: []
autounit包含的设置
设置要记录在生成的测试用例中的设置名称列表。Default: []
autounit额外路径
这是一个额外的字符串元素,添加到蜘蛛名和回调名。您可以使用此选项从具有不同配置的同一个spider中分离测试。Default: None
note:请记住,您始终可以为每个蜘蛛应用这些设置,包括蜘蛛的custom_settings
类属性中的设置-请参见https://docs.scrapy.org/en/latest/topics/settings.html#settings-per-spider。