当前位置: 首页 > news >正文

学校网站建设工作网站制作 信科网络

学校网站建设工作,网站制作 信科网络,广东公共广告20120708,国外对旅游网站的建设1. 简介 pytest是一款基于Python的测试框架。与Python自带的unittest相比#xff0c;pytes语法更加简洁#xff0c;断言更加强大#xff0c;并且在自动测试以及插件生态上比unittest都要更加强大。 1.1. 安装pytest pip install pytest1.2. pytest命名规则 pytest默认会…1. 简介 pytest是一款基于Python的测试框架。与Python自带的unittest相比pytes语法更加简洁断言更加强大并且在自动测试以及插件生态上比unittest都要更加强大。 1.1. 安装pytest pip install pytest1.2. pytest命名规则 pytest默认会自动搜索当前目录中符合规则的源文件并在源文件中搜索符合规则的类、函数来执行测试。 用例源文件以test_开头或以_test结尾的.py源文件。 用例类以Test开头的类名。 用例函数以test开头的函数名。 2. 基本功能 2.1. 函数测试 2.1.1. 单函数测试 示例代码 # codingutf-8def test_addition():result 2 2assert result 4执行测试 J:\2023\9\Pythonpytest test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0rootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 1 itemtest_main.py . [100%] 1 passed in 0.02s 2.1.2. 多函数测试 示例代码 # codingutf-8# test_main.py def test_addition():result 2 2assert result 4def test_subtraction():result 5 - 3assert result 3执行测试1 有一个测试用例错误会指出详细的错误提示信息。 J:\2023\9\Pythonpytest test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0rootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 2 itemstest_main.py .F [100%] FAILURES _____________________________ test_subtraction _____________________________def test_subtraction():result 5 - 3 assert result 3E assert 2 3test_main.py:9: AssertionError short test summary info FAILED test_main.py::test_subtraction - assert 2 3 1 failed, 1 passed in 0.46s 执行测试2 测试指定文件pytest默认会测试当前目录中所有满足要求的文件。如果只想测试其中1个可以指定测试文件。 J:\2023\9\Pythonpytest test_main.py test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0rootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 2 itemstest_main.py .F [100%] FAILURES _____________________________ test_subtraction _____________________________def test_subtraction():result 5 - 3 assert result 3E assert 2 3test_main.py:9: AssertionError short test summary info FAILED test_main.py::test_subtraction - assert 2 3 1 failed, 1 passed in 0.43s 2.1.3. 测试指定函数 示例代码 # codingutf-8# test_main.py def test_addition():result 2 2assert result 4def test_subtraction():result 5 - 3assert result 3执行测试 有时只想测试一个指定函数可指定测试函数名。 J:\2023\9\Pythonpytest test_main.py::test_addition test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0rootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 2 items / 1 deselected / 1 selectedtest_main.py . [100%] 1 passed, 1 deselected in 0.02s 2.2. 类测试 示例代码 # codingutf-8# test_main.pyclass TestExample:def test_addition(self):assert 2 2 4def test_subtraction(self):assert 5 - 3 2def test_multiplication(self):assert 3 * 4 12执行测试 默认测试当前目录下所有满足要求的文件中的所有满足要求的测试类以及测试函数pytest 指定测试文件pytest test_main.py 指定指定文件的测试类: pytest test_main.py::TestExample 测试指定类pytest -k “TestExample” 测试指定文件指定类的指定函数pytest test_main.py::TestExample::test_subtraction J:\2023\9\Pythonpytest test_main.py::TestExample::test_subtraction test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0rootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 1 itemtest_main.py . [100%] 1 passed in 0.03s 2.3. 测试参数 2.3.1. 基本用法 在 pytest 中有一些常用的测试参数可以帮助你更好地控制和定制测试的行为。以下是几个常用的 pytest 测试参数 -k EXPRESSION: 通过关键字表达式选择要运行的测试用例。例如-k “test_func” 将只运行名称中包含 “test_func” 的测试函数。 -s: 允许在测试运行期间输出打印语句和日志信息。这对于调试测试时非常有用。 -v: 输出详细的测试结果信息包括每个测试函数的名称和执行状态。 -x: 遇到第一个测试失败或错误后立即停止测试运行。 –maxfailnum: 在运行多个测试函数时最多允许 num 个失败。超过这个限制后测试将被中断。 –tbstyle: 设置回溯traceback显示风格。可以选择的选项包括 auto默认、short、line、no 和 native。 –covPACKAGE: 测试代码覆盖率报告的命令行选项。可以指定要计算覆盖率的包或模块。 -m: 通过在测试用例上添加装饰器 pytest.mark. 你可以给测试用例打上标记。然后使用 -m 选项来指定标记名称从而过滤特定的测试用例进行运行。 这只是 pytest 中一部分常用测试参数的示例。你可以通过运行 pytest --help 命令获取完整的测试参数列表并查阅 pytest 官方文档以了解更多详细信息和用法。 示例代码 # codingutf-8# test_main.pyclass TestExample:def test_addition(self):assert 2 2 4def test_subtraction(self):assert 5 - 3 2def test_multiplication(self):assert 3 * 4 12执行测试 J:\2023\9\Pythonpytest -v -s test_main.py::TestExample test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0 -- C:\Users\Michael\AppData\Local\Programs\Python\Python311\python.execachedir: .pytest_cacherootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 3 itemstest_main.py::TestExample::test_addition PASSEDtest_main.py::TestExample::test_subtraction PASSEDtest_main.py::TestExample::test_multiplication PASSED 3 passed in 0.03s 2.3.2. 代码用法 在命令行中指定参数更灵活但是每次都输入也麻烦。 pytest有提供pytest.main函数将命令行参数全部移到此函数的参数列表中。 示例代码 # codingutf-8 # test_main.pyimport pytestclass TestExample:def test_addition(self):assert 2 2 4def test_subtraction(self):assert 5 - 3 2def test_multiplication(self):assert 3 * 4 12if __name__ __main__:pytest.main([-s, -v, test_main.py])执行代码 J:\2023\9\Pythonpython test_main.py test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0 -- C:\Users\Michael\AppData\Local\Programs\Python\Python311\python.execachedir: .pytest_cacherootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 3 itemstest_main.py::TestExample::test_addition PASSEDtest_main.py::TestExample::test_subtraction PASSEDtest_main.py::TestExample::test_multiplication PASSED 3 passed in 0.03s 3. 高级功能 3.1. 参数化 测试的时候经常会遇到单个函数测试不同的参数如果每种参数单独写一个测试函数会重复麻烦。有没有更简单的方法参数化测试就是解决此问题的。 在 pytest 中参数化Parameterization是一种强大的功能允许你在单个测试函数中运行多次相同或类似的测试用例。这样可以减少重复的代码并使测试更加简洁和可读。 示例代码 主要是通过给测试函数添加pytest.mark.parametrize的装饰器来实现 # codingutf-8 # test_main.pyimport pytest# 定义被测试的函数def add(a, b):return a b# 使用参数化装饰器定义参数化测试pytest.mark.parametrize(a, b, expected_result, [(1, 2, 3), # 第一个测试用例a1, b2, 预期结果为 3(5, 5, 10), # 第二个测试用例a5, b5, 预期结果为 10(-1, 0, -1) # 第三个测试用例a-1, b0, 预期结果为 -1])def test_add(a, b, expected_result):assert add(a, b) expected_result执行测试 J:\2023\9\Pythonpytest -v test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0 -- C:\Users\Michael\AppData\Local\Programs\Python\Python311\python.execachedir: .pytest_cacherootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 3 itemstest_main.py::test_add[1-2-3] PASSED [ 33%]test_main.py::test_add[5-5-10] PASSED [ 66%]test_main.py::test_add[-1-0--1] PASSED [100%] 3 passed in 0.03s pytest.mark模块还有其他功能如指定函数执行次数指定测试条件指定测试顺序、跳过指定测试等。 3.2. fixture 在软件测试中“fixture” 一词通常被翻译为 “夹具”。 Fixture 是一个用于提供测试环境和共享资源的机制在测试执行过程中设置和清理测试代码所需的条件。pytest.fixture也是一个装饰器装饰器可以附加在指定函数上来实现在函数调用前或调用后来执行额外的操作。 测试一般分4个阶段Setup-Exercise-Verify-Teardown。(来自《xUnit Test Patterns 》) fixture就负责实现Setup和Teardown部分。 3.2.1 用作输入 示例代码 在执行test_multiply时调用fixture的形参input_values会优先执行相当于setup。形参可以调用多个fixture参数让参数输入测试更加灵活。 import pytest# 定义一个简单的 Fixture用于提供测试数据pytest.fixturedef input_values():a 5b 10return a, b# 定义要测试的函数def multiply(a, b):return a * b# 使用 Fixture 进行测试def test_multiply(input_values):a, b input_valuesresult multiply(a, b)assert result 50执行测试 J:\2023\9\Pythonpytest -v test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0 -- C:\Users\Michael\AppData\Local\Programs\Python\Python311\python.execachedir: .pytest_cacherootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 1 itemtest_main.py::test_multiply PASSED [100%] 1 passed in 0.03s 3.2.2. SetupTeardown 例如一个测试每次开始测试前要连接数据库测试完了之后要关闭数据库。如果每个测试用例中都添加一个connect_db和close_db函数会显得有些重复。利用fixture的SetupTeardown功能就可以自动完成连接和关闭数据库。pytest.fixture提供了yield协程来实现此功能。 示例代码 # codingutf-8 # test_main.pyimport pytestpytest.fixture()def db():print(\nConnection successful)yieldprint(\nConnection closed)def search_user(user_id):d {001: xiaoming}return d[user_id]def test_search(db):assert search_user(001) xiaoming执行测试 J:\2023\9\Pythonpytest -v -s test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0 -- C:\Users\Michael\AppData\Local\Programs\Python\Python311\python.execachedir: .pytest_cacherootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 1 itemtest_main.py::test_searchConnection successfulPASSEDConnection closed 1 passed in 0.03s 3.2.3. 作用域 fixture有4种作用域不同作用域有着不同的先后顺序默认为函数级。 function: 函数级每个测试函数都会执行一次固件 class: 类级别每个测试类执行一次所有方法都可以使用 module: 模块级每个模块执行一次模块内函数和方法都可使用 session: 会话级一次测试只执行一次所有被找到的函数和方法都可用。 示例代码 # codingutf-8 # test_main.pyimport pytestpytest.fixture(scopefunction)def func_scope():print(setup function)yieldprint(\nteardown function)pytest.fixture(scopemodule)def mod_scope():print(setup module)yieldprint(teardown module)pytest.fixture(scopesession)def sess_scope():print(\nsetup session)yieldprint(teardown session)pytest.fixture(scopeclass)def class_scope():print(setup class)yieldprint(teardown class)def test_multi_scope(sess_scope, mod_scope, class_scope, func_scope):pass执行测试 通过结果测试可以验证相关执行顺序 J:\2023\9\Pythonpytest -v -s test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0 -- C:\Users\Michael\AppData\Local\Programs\Python\Python311\python.execachedir: .pytest_cacherootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 1 itemtest_main.py::test_multi_scopesetup sessionsetup modulesetup classsetup functionPASSEDteardown functionteardown classteardown moduleteardown session 1 passed in 0.03s 3.2.4. 自动执行 如果测试的每个函数都需要添加fixture参数来实现相关功能会有些重复。autouse参数可以自动实现为所有作用域的函数、类、模块和会话添加Setup和Teardown功能。 示例代码 # codingutf-8 # test_main.pyimport pytestpytest.fixture(scopefunction, autouseTrue)def func_scope():print(\nsetup function)yieldprint(\nteardown function)def test_multi_scope():pass执行结果 J:\2023\9\Pythonpytest -v -s test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0 -- C:\Users\Michael\AppData\Local\Programs\Python\Python311\python.execachedir: .pytest_cacherootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 1 itemtest_main.py::test_multi_scopesetup functionPASSEDteardown function 1 passed in 0.03s 3.3. Hook装饰器 如果想要定制pytest的输出信息可以使用hook装饰器。下面的函数放在conftest.py文件中pytest默认会加载conftest.py文件所以此文件中的夹具和hook函数都会自动加载。pytest_runtest_makereport是用来定制输出报告信息的。对应测试函数的setup、call、teardown三个阶段通过rep.when来判断。 pytest.hookimpl(tryfirstTrue, hookwrapperTrue) def pytest_runtest_makereport(item, call):# execute all other hooks to obtain the report objectoutcome yieldrep outcome.get_result()# set a report attribute for each phase of a call, which can be setup, call, teardownsetattr(item, rep_ rep.when, rep)4. 其他 4.1. 插件化 pytest 是一个高度可扩展和插件化的测试框架。它提供了广泛的插件机制使得用户可以根据需要添加、自定义或扩展各种功能。 以下是 pytest 插件化的一些关键特性 自动发现和加载插件pytest 能够自动发现并加载安装在项目中的插件。只需将插件包安装到项目环境中pytest 就会自动识别并应用这些插件。 丰富的内置插件pytest 内置了许多常用的插件例如 capture 输出捕获插件、assertion 断言插件、coverage 代码覆盖插件等。这些内置插件提供了额外的功能和增强 pytest 的能力。 外部插件支持除了内置插件pytest 还支持第三方开发的插件。用户可以从社区中选择并使用各种插件例如数据库插件、测试报告生成插件、测试数据生成插件等。 插件钩子函数pytest 提供了一组钩子函数允许插件介入测试执行过程中的不同阶段。通过实现这些钩子函数插件可以在测试运行过程中进行自定义操作如修改配置、收集测试用例、修改测试结果等。 自定义插件开发如果现有的插件不能满足需求用户还可以根据自己的需求开发定制化的插件。pytest 提供了丰富的 API 和文档帮助用户编写自己的插件并与其他 pytest 插件进行协作。 通过插件化的特性pytest 提供了灵活、可定制的测试框架环境使用户能够根据具体需求轻松扩展和定制 pytest 的功能并集成额外的工具和服务。这使得 pytest 成为一个受欢迎的测试框架适用于各种测试场景和项目规模。 4.2. 测试报告 pytest-html是常用的测试报告生成pytest插件。 4.2.1. 安装pytest-html pip install pytest-html 4.2.2. 使用 J:\2023\9\Pythonpytest -sv --htmlreport.html test session starts platform win32 -- Python 3.11.0, pytest-7.1.3, pluggy-1.0.0 -- C:\Users\Michael\AppData\Local\Programs\Python\Python311\python.execachedir: .pytest_cachemetadata: {Python: 3.11.0, Platform: Windows-10-10.0.18363-SP0, Packages: {pytest: 7.1.3, pluggy: 1.0.0}, Plugins: {anyio: 3.6.2, asyncio: 0.19.0, cov: 4.0.0, excel: 1.5.0, html: 4.0.2, metadata: 3.0.0, timeout: 2.1.0}}rootdir: J:\2023\9\Pythonplugins: anyio-3.6.2, asyncio-0.19.0, cov-4.0.0, excel-1.5.0, html-4.0.2, metadata-3.0.0, timeout-2.1.0asyncio: modeMode.STRICTcollected 3 itemstest_main.py::TestExample::test_addition PASSEDtest_main.py::TestExample::test_subtraction PASSEDtest_main.py::TestExample::test_multiplication PASSED------- Generated html report: file:///J:/2023/9/Python/report.html -------- 3 passed in 0.25s 4.2.3. 报告 4.3. 集成 pytest可以方便地集成到Jenkins并且可以用 PytestAllure生成更加可视的报告。 pytest可以自动集成到vscode中可以更加方便地手动执行单个或多个测试。
文章转载自:
http://www.morning.hhzdj.cn.gov.cn.hhzdj.cn
http://www.morning.rkdnm.cn.gov.cn.rkdnm.cn
http://www.morning.drhnj.cn.gov.cn.drhnj.cn
http://www.morning.qnftc.cn.gov.cn.qnftc.cn
http://www.morning.skpdg.cn.gov.cn.skpdg.cn
http://www.morning.qzxb.cn.gov.cn.qzxb.cn
http://www.morning.fnzbx.cn.gov.cn.fnzbx.cn
http://www.morning.lnfkd.cn.gov.cn.lnfkd.cn
http://www.morning.fylsz.cn.gov.cn.fylsz.cn
http://www.morning.trbxt.cn.gov.cn.trbxt.cn
http://www.morning.gbrps.cn.gov.cn.gbrps.cn
http://www.morning.jlmrx.cn.gov.cn.jlmrx.cn
http://www.morning.fqqcd.cn.gov.cn.fqqcd.cn
http://www.morning.c7491.cn.gov.cn.c7491.cn
http://www.morning.mzwfw.cn.gov.cn.mzwfw.cn
http://www.morning.tqrjj.cn.gov.cn.tqrjj.cn
http://www.morning.mbaiwan.com.gov.cn.mbaiwan.com
http://www.morning.jzdfc.cn.gov.cn.jzdfc.cn
http://www.morning.rkrcd.cn.gov.cn.rkrcd.cn
http://www.morning.qjngk.cn.gov.cn.qjngk.cn
http://www.morning.bwjws.cn.gov.cn.bwjws.cn
http://www.morning.fbmjl.cn.gov.cn.fbmjl.cn
http://www.morning.lffrh.cn.gov.cn.lffrh.cn
http://www.morning.fpjxs.cn.gov.cn.fpjxs.cn
http://www.morning.ccpnz.cn.gov.cn.ccpnz.cn
http://www.morning.ljsxg.cn.gov.cn.ljsxg.cn
http://www.morning.lzph.cn.gov.cn.lzph.cn
http://www.morning.grzpc.cn.gov.cn.grzpc.cn
http://www.morning.thmlt.cn.gov.cn.thmlt.cn
http://www.morning.mdjzydr.com.gov.cn.mdjzydr.com
http://www.morning.rjjjk.cn.gov.cn.rjjjk.cn
http://www.morning.hympq.cn.gov.cn.hympq.cn
http://www.morning.lxbml.cn.gov.cn.lxbml.cn
http://www.morning.sgnjg.cn.gov.cn.sgnjg.cn
http://www.morning.tqklh.cn.gov.cn.tqklh.cn
http://www.morning.zdtfr.cn.gov.cn.zdtfr.cn
http://www.morning.npqps.cn.gov.cn.npqps.cn
http://www.morning.wgcng.cn.gov.cn.wgcng.cn
http://www.morning.rhph.cn.gov.cn.rhph.cn
http://www.morning.cctgww.cn.gov.cn.cctgww.cn
http://www.morning.bzkgn.cn.gov.cn.bzkgn.cn
http://www.morning.zzhqs.cn.gov.cn.zzhqs.cn
http://www.morning.xknsn.cn.gov.cn.xknsn.cn
http://www.morning.ydwnc.cn.gov.cn.ydwnc.cn
http://www.morning.fbmjl.cn.gov.cn.fbmjl.cn
http://www.morning.lxwjx.cn.gov.cn.lxwjx.cn
http://www.morning.fkgct.cn.gov.cn.fkgct.cn
http://www.morning.pzss.cn.gov.cn.pzss.cn
http://www.morning.wgbmj.cn.gov.cn.wgbmj.cn
http://www.morning.fdrch.cn.gov.cn.fdrch.cn
http://www.morning.jfbpf.cn.gov.cn.jfbpf.cn
http://www.morning.qyqdz.cn.gov.cn.qyqdz.cn
http://www.morning.htmhl.cn.gov.cn.htmhl.cn
http://www.morning.qcztm.cn.gov.cn.qcztm.cn
http://www.morning.hwcgg.cn.gov.cn.hwcgg.cn
http://www.morning.cykqg.cn.gov.cn.cykqg.cn
http://www.morning.ccpnz.cn.gov.cn.ccpnz.cn
http://www.morning.xcyhy.cn.gov.cn.xcyhy.cn
http://www.morning.jhtrb.cn.gov.cn.jhtrb.cn
http://www.morning.gygfx.cn.gov.cn.gygfx.cn
http://www.morning.ygwbg.cn.gov.cn.ygwbg.cn
http://www.morning.nlbhj.cn.gov.cn.nlbhj.cn
http://www.morning.xjqrn.cn.gov.cn.xjqrn.cn
http://www.morning.nmrtb.cn.gov.cn.nmrtb.cn
http://www.morning.hqqpy.cn.gov.cn.hqqpy.cn
http://www.morning.bsqbg.cn.gov.cn.bsqbg.cn
http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn
http://www.morning.rpljf.cn.gov.cn.rpljf.cn
http://www.morning.flqbg.cn.gov.cn.flqbg.cn
http://www.morning.wptrm.cn.gov.cn.wptrm.cn
http://www.morning.tllhz.cn.gov.cn.tllhz.cn
http://www.morning.wftrs.cn.gov.cn.wftrs.cn
http://www.morning.fxqjz.cn.gov.cn.fxqjz.cn
http://www.morning.sgwr.cn.gov.cn.sgwr.cn
http://www.morning.jwwfk.cn.gov.cn.jwwfk.cn
http://www.morning.mhwtq.cn.gov.cn.mhwtq.cn
http://www.morning.nthyjf.com.gov.cn.nthyjf.com
http://www.morning.errnull.com.gov.cn.errnull.com
http://www.morning.rmjxp.cn.gov.cn.rmjxp.cn
http://www.morning.yxwrr.cn.gov.cn.yxwrr.cn
http://www.tj-hxxt.cn/news/236961.html

相关文章:

  • 网站建设模块化实现怎么找外包公司
  • 外贸网站架构兰州家易选网络科技有限公司
  • 浙江省建设诚信系统网站学生网页设计成品网站
  • 品牌网站建设公司哪家好k5wordpress主题
  • 黑龙江恒泰建设集团网站品牌整合营销机构
  • 网站 数据库+1杭州网络公司哪家服务比较好
  • 做游戏网站要备案吗浙江网站建设费用
  • 哪些公司可以建设网站页面设计原型图
  • 有哪些做产品产业链分析的网站经典设计网站
  • 手机网站制作方法厦门企业网站建设专家
  • 怎么做中英文版网站wordpress调用百度网盘视频
  • c 可以做网站广州公司宣传片设计
  • 网站建设作业素材网站构建器
  • 网站开发与建设的原则咸阳建设网站
  • 网站建设的工作视频人的吗商城微网站模板
  • 咸阳建设网站营销策划包括哪些内容
  • 网站没有备案号会展相关网站建设情况
  • 网站开发进度缓慢深圳市福田区656号
  • 石家庄建站模板厂家常用的网络营销策略有哪些
  • 天猫交易网站可以直接做室内su的网站
  • 佛山多语网站制作设计一个商务网站
  • 常宁网站设计设计公司网站应该包括的信息
  • 网站备案期间打不开wordpress编辑器图片
  • 建个网站多少费用温州快速网站推广公司
  • 常德论坛网站猫咪网站模版下载
  • 销售型企业网站怎么制作自己的作品集
  • 网站制作用的软件长春专业企业网站建设价格
  • wordpress仿盗太原网站seo服务
  • 兰山网站建设公司wordpress 微信支付插件下载
  • 百度网站排名全掉域名注册网站有哪些