废料单元测试自动生成。

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中使用/重写此键,以防止出现意外行为。

设置

autounit\u已启用
将其设置为TrueFalse以启用或禁用单元测试生成。

autounit_max_fixtures_per_回调
设置每个回调存储的最大数量的固件。
Minimum: 10
Default: 10

autounit\u跳过的字段
设置要从测试回调项中跳过的字段列表。绕过每次运行时返回不同值的字段很有用。
例如,如果在spider中有一个字段始终设置为datetime.now(),则可能需要将该字段添加到此列表中,以便在测试时跳过。否则,生成fixture时的值将不同于运行测试时的值,从而使测试失败。
Default: []

autounit请求跳过字段
设置运行测试时要跳过的请求字段列表。
类似于autounit_skipped_字段,但应用于请求而不是项目。
Default: []

autounit_excluded_头
设置要从请求记录中排除的标题列表。
出于安全原因,autounit在默认情况下已经排除了AuthorizationProxy-Authorization头,如果您想在设备中包含它们,请参见AUTOUNIT_INCLUDED_AUTH_HEADERS
Default: []

autounit_included_auth_头
如果要在设备中包含AuthorizationProxy-Authorization头,请将其中一个或两个添加到此列表中。
Default: []

autounit包含的设置
设置要记录在生成的测试用例中的设置名称列表。
Default: []

autounit额外路径
这是一个额外的字符串元素,添加到蜘蛛名和回调名。您可以使用此选项从具有不同配置的同一个spider中分离测试。
Default: None


note:请记住,您始终可以为每个蜘蛛应用这些设置,包括蜘蛛的custom_settings类属性中的设置-请参见https://docs.scrapy.org/en/latest/topics/settings.html#settings-per-spider

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我需要验证电子邮件地址,并在下一页确认为<first letter>xxxxx@<domain first letter>xxxx。通用域名格式   java如何修改JNI字符串的每个字符代码?   java正则表达式来执行解析   java如何比较将转换为相同字符的两个字符?   java在“条件”时“不做任何事情”   包含空格的java枚举值   flatMap返回List<Object>而不是List<String>   java线程objectoutputstream objectinputstream阻止不读取   与Java相比,Scala对于泛型和通配符有哪些机制?   nio Java获取文件夹列表,其中至少包含一个文件   java Wildfly无法获得大于256的最大连接数   SpringBootJava是因为缓存而发生在我身上的问题吗?   slf4j如何使用Java将OSC发送到QLab?   Java偏序集模拟