哪种方式适合模拟和测试使用模拟库从open()返回的对象的代码?
whitelist_data.py:
WHITELIST_FILE = "testdata.txt"
format_str = lambda s: s.rstrip().lstrip('www.')
whitelist = None
with open(WHITELIST_FILE) as whitelist_data:
whitelist = set(format_str(line) for line in whitelist_data)
if not whitelist:
raise RuntimeError("Can't read data from %s file" % WHITELIST_FILE)
def is_whitelisted(substr):
return 1 if format_str(substr) in whitelist else 0
Run Code Online (Sandbox Code Playgroud)
这是我尝试测试它的方式.
import unittest
import mock
TEST_DATA = """
domain1.com
domain2.com
domain3.com
"""
class TestCheckerFunctions(unittest.TestCase):
def test_is_whitelisted_method(self):
open_mock = mock.MagicMock()
with mock.patch('__builtin__.open',open_mock):
manager = open_mock.return_value.__enter__.return_value
manager.__iter__ = lambda …Run Code Online (Sandbox Code Playgroud) 我有一个名为的应用程序的Django项目subscribe.在root中urls.py我使用include来自subscribe的urls.py.
我把对INSTALLED_APPS subscribe和subscribe的urls.py我使用的subscribe.views.<name>产品,请致电我的看法.服务器在python manage.py runserver本地运行时一切正常.但是当服务器使用virtualenv在nginx + uwsgi上运行时,我已经得到了ImportError: No module named subscribe.当我改变subscribe,以project.subscribe在INSTALLED_APPS和subscribe的urls.py变化subscribe.views.<name>,以project.subscribe.views.<name>一切工作正常.
uwsgi配置:
[uwsgi]
socket = 127.0.0.1:9003
workers = 2
master = true
virtualenv = /home/user/python
chdir = /home/user
env = DJANGO_SETTINGS_MODULE=project.settings
module = django.core.handlers.wsgi:WSGIHandler()
daemonize = /home/user/uwsgi.log
Run Code Online (Sandbox Code Playgroud)
为什么我应该使用绝对路径导入以及如何使用virtualenv将其更改为nginx + uwsgi上的相对位置?
django ×1
import ×1
mocking ×1
nginx ×1
python ×1
python-mock ×1
tdd ×1
uwsgi ×1
virtualenv ×1