我正在尝试计算转发器中的元素并将其打印到控制台.
这是标记:
<div class="col-md-3 ng-scope" ng-repeat="app in userApps" >...< /div>
Run Code Online (Sandbox Code Playgroud)
目前我正在计算和比较:
expect(element.all(by.repeater('app in userApps')).count()).toEqual(4);
Run Code Online (Sandbox Code Playgroud)
它有效,但我也希望能够打印它.
我试过这个:
var rows = element.all(by.repeater("app in userApps"));
var sum = rows.count();
console.log(sum.getText());
Run Code Online (Sandbox Code Playgroud)
但我得到了:
TypeError: Object [object Object] has no method 'getText'
Run Code Online (Sandbox Code Playgroud)
实际上有两个问题 - 我是以正确的方式做到的吗?2.如何将其打印到控制台?
使用 python 3.5.3 我想断言模拟函数收到了特定的参数,但我不想检查所有收到的参数,只检查对测试重要的参数。
例如,不要这样做:
my_func_mock.assert_called_with('arg1','arg2','arg3')
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
my_func_mock.assert_called_with_partial(arg2='arg2')
Run Code Online (Sandbox Code Playgroud)
是否可以?
我们正在使用 Django 1.10
我们收到了很多这样的警告:
RuntimeWarning: DateTimeField Item.updated_at received a naive datetime (2018-05-01 12:35:18.213471) while time zone support is active.
RuntimeWarning)
Run Code Online (Sandbox Code Playgroud)
我阅读了很多关于这些问题的答案,但在这种情况下,我们不会手动设置日期。该字段 (Item.updated_at) 设置为
auto_now=True
Run Code Online (Sandbox Code Playgroud)
有没有办法让“auto_now”不幼稚?
这是模型的一部分:
class BaseModel(models.Model):
id = models.UUIDField(default=uuid.uuid4, editable=False, db_index=True, unique=True, primary_key=True)
created_by = models.CharField(max_length=200)
created_at = models.DateTimeField(db_index=True, auto_now_add=True)
updated_by = models.CharField(max_length=200)
updated_at = models.DateTimeField(db_index=True, auto_now=True)
Run Code Online (Sandbox Code Playgroud)
谢谢
编辑:这可能与我们在测试中使用的工厂有关吗?例如:
class ItemFactory(factory.django.DjangoModelFactory):
class Meta:
model = Item
title = "Fake item title"
identifier = factory.Sequence(lambda n: n)
status_id = Status.Open['id']
due_date = None
updated_by = "Fake updater"
updated_at = …Run Code Online (Sandbox Code Playgroud) 我可以使用spec或suite名称作为参数运行量角器测试吗?我目前正在运行它:
protractor myconf.js
Run Code Online (Sandbox Code Playgroud)
谢谢.
javascript testing test-suite command-line-arguments protractor
我正在使用Django 1.10,python 3.5和celery 4.1.0,我正在尝试将celery任务信息记录到文件中。所以我按照芹菜文档中的建议进行了尝试-
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
Run Code Online (Sandbox Code Playgroud)
并尝试在任务内记录一条消息-
logger.info(message)
Run Code Online (Sandbox Code Playgroud)
我希望它可以登录到我的默认记录器。但事实并非如此。因此,我在设置中添加了一个名为“ celery.task”的专用记录器(据文档了解):
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
'require_test_false': {
'()': 'myapp.utils.classes.logging.RequireTestFalse',
},
'suppress_deprecated': {
'()': 'myapp.utils.classes.logging.SuppressDeprecated'
}
},
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'json',
'filters': ['suppress_deprecated']
},
'celery_file': {
'level': 'INFO',
'class': 'myapp.utils.classes.logging.SBRotatingFileHandler',
'maxBytes': 1024 * 1024 * 200, # 200 MB
'backupCount': 10,
'formatter': 'json',
'filename': BASE_DIR + …Run Code Online (Sandbox Code Playgroud) 在我们的项目中,我们使用软删除(模型上的 is_deleted 属性)。在创建新模型之前,我想首先检查它是否已经存在并删除,如果是 - 设置 is_deleted=False 并保存已经存在的模型。所以我决定覆盖模型的“保存”方法。(不是视图创建,因为它不仅应该适用于请求)问题是所有操作(创建、更新、删除)都调用了“save()”。有没有办法只能在创建时调用覆盖的方法?
class Model(BaseModel):
title = models.CharField(max_length=200)
identifier = models.CharField(max_length=15)
def save(self, *args, **kwargs):
try:
existing_model = Model.objects.active_and_deleted().get( identifier=self.identifier)
if self.is_deleted is False:
existing_model.is_deleted = False
existing_model.title = self.title
existing_model.created_at = self.created_at
existing_model.updated_at = self.updated_at
existing_model.created_by = self.created_by
existing_model.deleted_at = None
super(Model, existing_model).save(args, kwargs)
except Model.DoesNotExist:
# in case the Nodel wasn't already exist - continue
pass
super(Model, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud) 在我的程序中,我正在计算两个数字,我想确保它们的减法等于1.
这是代码:
var firstCount=element.all(by.repeater('app in userApps')).count();
var secondCount=element.all(by.repeater('app in userApps')).count();
Run Code Online (Sandbox Code Playgroud)
到目前为止它很好 - 我得到的数字.接下来的问题是:
var sub=secondCount-firstCount;
expect(sub).toEqual(1);
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
Expected NaN to equal 1.
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我曾经成功运行过Protractor测试(在Mac上),我试图升级版本,所以我跑了
$npm install -g protractor
Run Code Online (Sandbox Code Playgroud)
看起来它似乎有效 - 跑步的时候
$protractor --version
Run Code Online (Sandbox Code Playgroud)
我明白了
Version 1.8.0
Run Code Online (Sandbox Code Playgroud)
但是现在,跑步的时候
$webdriver-manager start
Run Code Online (Sandbox Code Playgroud)
我明白了
fs.js:642
return binding.mkdir(pathModule._makeLong(path),
^
Error: EACCES, permission denied '/usr/local/lib/node_modules/protractor/selenium'
at Object.fs.mkdirSync (fs.js:642:18)
at Object.<anonymous> (/usr/local/lib/node_modules/protractor/bin/webdriver- manager:108:6)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我们使用的是 django 1.10,Celery 4.1.0
我正在尝试使用 apply_async。这是任务:
from celery import Celery
app = Celery('my_app', broker='redis://127.0.0.1:6379/2')
@app.task
def add(x, y):
print(str(x+y))
raise status.HTTP_500_INTERNAL_SERVER_ERROR
Run Code Online (Sandbox Code Playgroud)
当使用 'delay' 调用它时,它运行 'add' 函数但不重试:
add.delay(4, 4)
Run Code Online (Sandbox Code Playgroud)
我尝试使用 'apply_async' 和 'retry' 和 'retry_policy' 运行任务,但它似乎甚至没有运行任务:
add.apply_async((4, 4),
retry=True,
retry_policy={
'max_retries': 3,
'interval_start': 0,
'interval_step': 0.2,
'interval_max': 0.2,
}
)
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我正在使用 Django 1.10 和 PostgreSQL DB。我想弄清楚我是否可以statement_timeout从 Django设置。似乎我不能像connect_timeout(in settings.py)那样做:
DATABASES[DEFAULT]['OPTIONS'] = {
'connect_timeout': float(os.getenv('DEFAULT_DB_OPTIONS_TIMEOUT', 5))
}
Run Code Online (Sandbox Code Playgroud)
我看到了这样的东西,但我找不到验证它确实有效的方法:
DATABASES[DEFAULT]['OPTIONS'] = {
'options': '-d statement_timeout=700'
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以直接从数据库设置它,如:
set statement_timeout=5000
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一种从 Django 中做到这一点的方法。
python ×6
django ×5
protractor ×4
javascript ×3
angularjs ×2
end-to-end ×2
testing ×2
assertion ×1
celery ×1
datetime ×1
logging ×1
model ×1
node.js ×1
npm ×1
postgresql ×1
subtraction ×1
test-suite ×1
timezone ×1
unit-testing ×1