Python: 如何在开发第三方包时搭载现有测试

Python: How to piggyback on existing tests when developing third party packages

我在 django-rest-framework 上添加 "hybrid pagination" 的 PR 被拒绝了,理由是最好放在第 3 方包中。

所以我继续创建了包结构,但在创建测试时遇到了困难,如果你看一下 PR files changed,我的新测试只是扩展现有测试并更改为使用我的新测试分页 class.

 +class TestCombinedPaginationPageNumber(TestPageNumberPagination):
 +    def setup(self):
 +        class ExamplePagination(pagination.HybridPagination):
 +            page_size = 5
 +
 +        self.pagination = ExamplePagination()
 +        self.queryset = range(1, 101)
 +
 +
 +class TestCombinedPaginationLimitOffset(TestLimitOffset):
 +    def setup(self):
 +        class ExamplePagination(pagination.HybridPagination):
 +            default_limit = 10
 +            max_limit = 15
 +
 +        self.pagination = ExamplePagination()
 +        self.queryset = range(1, 101)

我无法找到在我自己的第 3 方测试中搭载这些测试的方法,我无法远程扩展它,因为安装包不包含测试文件。我尝试复制特定的 test_pagination.py 文件,但出现了很多错误。

更正您将无法包含 pip install 包中的测试。您需要克隆要在本地复制的任何测试用例。

I tried copying the particular test_pagination.py file but getting a lot of errors.

我建议从小处着手。拿一个你想复制的测试用例。只复制 那个,以及它依赖的任何导入。

更一般地说,您应该只尝试专门测试包添加的位,而不是重新测试 REST 框架的行为。例如,对于您的 "switch between pagination styles",不要旨在测试分页本身,而是测试切换行为。

希望对您有所帮助。如果您在编写测试用例时遇到解决特定错误的任何问题,请在 REST 框架邮件列表中大声疾呼。