使用特定IP的Django REST客户端测试

问题描述 投票:1回答:2

Django REST docsMETA读取地址。所以我必须创建存储ip-address / subnet的Whitelist模型。没有什么大不了的我已经在我的数据库中拥有所有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-address而不是127.0.0.1的白名单 我怎么能在pytest那样做?

python django django-rest-framework pytest-django
2个回答
2
投票

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

因为APICLient继承了相同的来源。设置标题非常简单。

client = APIClient(REMOTE_ADDR='x.x.x.x')

0
投票

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

如果您计划测试一次,只需将应用程序部署到另一台主机并运行测试。

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

© www.soinside.com 2019 - 2024. All rights reserved.