1

Django REST 文档META. 所以我必须为Whitelist它创建存储 ip-address/subnet 的模型。没什么大不了302的,我的数据库中已经有了所有子网。

from rest_framework import permissions

class BlacklistPermission(permissions.BasePermission):
    """
    Global permission check for blacklisted IPs.
    """

    def has_permission(self, request, view):
        ip_addr = request.META['REMOTE_ADDR']
        blacklisted = Blacklist.objects.filter(ip_addr=ip_addr).exists()
        return not blacklisted

问题:
我想从其他 IP 地址测试白名单,而不是127.0.0.1
如何在其中执行此操作pytest

4

2 回答 2

4

感谢@rpkilby
https://github.com/encode/django-rest-framework/issues/5775#issuecomment-360734150

因为APICLient从同一来源继承。设置标题非常简单。

client = APIClient(REMOTE_ADDR='x.x.x.x')
于 2018-01-27T11:06:10.640 回答
1

编写集成测试:使用requests或等效库来调用您的 API。

如果您打算对其进行一次测试,只需将应用程序部署在另一台主机上并运行测试即可。

如果您想要自动化测试,请考虑使用 CI/CD 管道。将您的 API 放入一个容器中,将测试代码放入另一个容器中,然后在需要时触发这些测试。

于 2018-01-24T05:33:37.380 回答