0%

MongoDB是一个免费的开源跨平台的面向文档的NoSQL数据库。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: '3.7'

services:
mongo:
image: mongo
restart: always
ports:
- 27017:27017
volumes:
- ./data:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: 1C570DED651F41ABB99286C14DA4AD4A
mongo-express:
image: mongo-express
restart: always
ports:
- 8081:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: 1C570DED651F41ABB99286C14DA4AD4A

Faker是一个Python包,主要用来创建伪数据,使用Faker包,无需再手动生成或者手写随机数来生成数据,只需要调用Faker提供的方法,即可完成数据的生成。

安装

1
pip install faker

使用

在命令行中使用

安装完之后,可以直接在控制台使用faker命令:

1
usage: faker [-h] [--version] [-v] [-o output] [-l LOCALE] [-r REPEAT] [-s SEP] [--seed SEED] [-i [INCLUDE [INCLUDE ...]]] [fake] [fake argument [fake argument ...]]

详细用法可使用faker --help查看帮助文档。

Read more »

Requirements文件是包含需要使用pip install安装的项目列表文件。

Requirements文件的每一行都是一条要安装的内容,就像pip install的参数一样,支持以下形式:

1
2
3
4
5
[[--option]...]
<requirement specifier> [; markers] [[--option]...]
<archive url/path>
[-e] <local project path>
[-e] <vcs project url>

可以使用#来表示注释,行尾以\表示折行。

Read more »

今天做代码检查的时候发现,关于时间处理这一块可以做进一步提取。

最初的想法是,自定义一个类,继承Date,运行的时候抛出了一个很奇怪的错误:

1
Uncaught TypeError: this is not a Date object.

经过查找,发现有人也遇到了相同的问题: 如何继承Date对象?

最终采用原型扩展的方式实现,代码如下:

Read more »

今天有同事问我一个问题,在使用django-celery-beat库时,发现有大量定时任务没有执行。 我一听到这就有点疑惑:有大量定时任务?

在了解了详细情况后发现,这个业务本身是应该采用其他方式处理的,如:

  1. 创建一个每N分钟执行的定时任务,然后在这个任务中对业务进行批量处理;
  2. 为每一条业务数据生成一个异步任务,而非定时任务。

虽说业务可以绕过去,但问题本身并没有解决:有大量定时任务没有执行

问题原因分析

创建大量定时任务

1
2
3
4
5
6
7
8
9
10
11
# 总定时任务数:24 * 60 * 100 == 144000
for hour, minute in product(range(24), range(60)):
tasks = []
crontab, _ = CrontabSchedule.objects.get_or_create(minute=minute, hour=hour)
for index in range(100):
tasks.append(PeriodicTask(
crontab=crontab,
name=f'beat_{hour}_{minute}_{index}',
task='examples.tasks.task_schedule'
))
PeriodicTask.objects.bulk_create(tasks)
Read more »

什么是API

API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。

什么是API测试

API测试与UI测试不同,UI测试主要关注表现层,而API测试主要关注业务逻辑层。 着重强调的是逻辑调用关系,而不是UI操作或用户感官。

Read more »

介绍

Robot Framework是基于Python的可扩展的关键字驱动的自动化框架,用于验收测试,验收测试驱动开发(ATDD),行为驱动开发(BDD)和机器人流程自动化(RPA)。 它可用于分布式,异构环境,在这些环境中,自动化需要使用不同的技术和界面。

该框架周围有一个丰富的生态系统,由作为单独项目开发的各种通用库和工具组成。

为什么使用Robot Framework

  • 启用易于使用的表格语法,以统一的方式创建测试用例。
  • 提供从现有关键字创建可重用的高级关键字的功能。
  • 提供易于阅读的结果报告和HTML格式的日志。
  • 是平台和应用程序独立的。
  • 提供一个简单的库API,用于创建自定义的测试库,该库可以用Python或Java本地实现。
  • 提供命令行界面和基于XML的输出文件,以集成到现有的构建基础结构(连续集成系统)中。
    Read more »

使用pip命令查看

在命令行模式下,直接使用pip freezepip list命令查看。

在代码中查看

1
2
3
4
5
6
7
8
>>> from pip._internal.utils.misc import get_installed_distributions
>>> installed_packages = [f'{_.key}=={_.version}' for _ in get_installed_distributions()]
>>> print('\n'.join(installed_packages))
urllib3==1.25.8
setuptools==41.2.0
requests==2.22.0
pip==20.0.2
...