Esempio n. 1
0
    def settings(cls):
        """
        这个应该在app加载时调用,这样project_path才准确。
        由于有些项目可能在模块作用域就需要使用settings中的配置,
        所以调用应该在项目模块加载之前。

        :return:
        """
        return SettingsLoader().load(
            SettingsMixin.settings_path or "settings",
            default={"PROJECT_PATH": os.path.abspath(os.getcwd())})
Esempio n. 2
0
def test_settings():
    sw = SettingsLoader()
    set = sw.load({
        "a": 1,
        "b": "d",
        "c": {
            "d": [3, 4, 5, 6],
            "e": {"a", 4, 5, 6}
        }
    })
    print(set)
    print(set.c.e)
Esempio n. 3
0
class TestService(object):
    pytestmark = [
        arti_ser("settings", ret_val=SettingsLoader().load("settings")),
    ]

    @arti_ser("code", ret_val="111111")
    @pytest.mark.env(NEED_CODE="True")
    async def test_check_code_on_True(self):
        assert ArticleService().check_code("111111") is True

    @arti_ser("code", ret_val="22222")
    @pytest.mark.env(NEED_CODE="True")
    async def test_check_code_on_False(self):
        assert ArticleService().check_code("111111") is False

    @arti_ser("code", ret_val="3333")
    @pytest.mark.env(NEED_CODE="False")
    async def test_check_code_off(self):
        assert ArticleService().check_code("111111") is True
Esempio n. 4
0
 def __init__(self):
     """
         初始化logger, redis_conn
     """
     self.enrich_parser_arguments()
     args = self.parser.parse_args()
     cwd = getcwd()
     sys.path.insert(0, cwd)
     self.settings = SettingsLoader().load(args.localsettings, args.settings)
     self.headers = self.settings.HEADERS
     self.proxies_check_in_channel = ThreadSafeSet()
     self.proxies_check_out_channel = TreadSafeDict()
     self.load_site(proxy_site_spider)
     self.load_site(args.spider_module)
     self.redis_conn = Redis(self.settings.get("REDIS_HOST"),
                             self.settings.get_int("REDIS_PORT"))
     if args.check_method:
         self.is_anonymous = partial(load(args.check_method), self)
     super().__init__()
     self.supervisor.control(log_path=os.path.join(cwd, self.name) + ".log")
     self.console.init_console()
     self.my_ip = requests.get("https://httpbin.org/ip").json()["origin"]
Esempio n. 5
0
 def settings(cls):
     # type: () -> Settings
     return SettingsLoader().load(cls.settings_path or "settings")
Esempio n. 6
0
 def __init__(self):
     self.settings = SettingsLoader().load(self.settings_path or "settings")
Esempio n. 7
0
import pytest

from io import BytesIO
from zipfile import ZipFile
from apistellar import settings
from collections import defaultdict
from pytest_apistellar import prop_alias
from toolkit.settings import SettingsLoader

from blog.blog.article.service import ArticleService, Article
from blog.blog.article.article_exporter import ArticleFile
arti_ser = prop_alias("blog.blog.article.service.ArticleService")
article = prop_alias("blog.blog.article.article.Article")


@arti_ser("settings", ret_val=SettingsLoader().load("blog.settings"))
@pytest.mark.asyncio
class TestService(object):
    @article("load",
             ret_val=Article(id="20181010101010",
                             article="![](http://www.baidu.com/)"))
    async def test_get(self):
        article = await ArticleService().get("20181010101010")
        assert article["first_img"] == "http://www.baidu.com/"

    @pytest.mark.prop(
        "blog.blog.article.article_exporter.ArticleExporter.export",
        ret_val=ArticleFile("test.pdf", b"aaaaa"))
    async def test_export(self):
        file_resp = await ArticleService().export([1], "", "")
        zip_file = BytesIO(file_resp.content)