XlsxWriter对象保存为http响应以在Django中创建下载?
使用Django的普通测试运行器,您可以深入研究在特定应用程序,TestCase的特定子类或TestCase的特定子类中的特定测试中运行测试.
例如:
./manage.py test myapp.MyTestCase.test_something
Run Code Online (Sandbox Code Playgroud)
但是,除了测试特定应用程序之外,django-nose似乎不支持任何其他内容.我如何复制最后两个行为?
所以我有一个Selenium功能测试套件.我已经在一些测试中测试了登录/注册功能,方法是将Selenium客户端导航到注册页面,输入用户名和密码,然后告诉Selenium使用相同的凭据登录.现在我想测试网站"登录所需"区域的其他部分,而不必告诉Selenium点击并在测试浏览器中输入文本.
换句话说,我想使用这样的东西(我在视图单元测试中使用得很好):
self.client = Client()
self.user = User.objects.create_user('temporary', 'temporary@gmail.com', 'temporary')
self.user.save()
self.client.login(username='temporary', password='temporary')
Run Code Online (Sandbox Code Playgroud)
在我的Selenium测试中,所以我不必在每次测试中重复冗长的手动登录过程(因为我已经在之前的测试中测试过登录系统,如前所述)
截至目前,我只是为每个需要登录的测试复制并粘贴"登录流程"Selenium说明.这导致我的测试每次增加5-6秒,这使我的function_tests.py文件非常臃肿.
我所有的谷歌搜索都带我到教我如何用Selenium测试登录的页面.
提前致谢.
我正在尝试使用带有SQLALchemy的参数(在一个alembic脚本中)运行这个简单的原始sql语句:
from alembic import op
t = {"code": "123", "description": "one two three"}
op.execute("insert into field_tags (id, field_id, code, description) "+
"values (1,'zasz', :code ,:description')", t)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
sqlalchemy.exc.StatementError: A value is required for bind parameter
'description' (original cause: InvalidRequestError: A value is required for
bind parameter 'description') "insert into field_tags (id, field_id, code,
description) values (1, 'math',
%(code)s ,%(description)s)" []
Run Code Online (Sandbox Code Playgroud)
解决方案:
t = {"code": "123", "description": "one two three"}
from sqlalchemy.sql import text
op.get_bind().execute(text("insert into field_tags (id, field_id, code, description) …Run Code Online (Sandbox Code Playgroud) python sqlalchemy database-migration flask-sqlalchemy alembic
我不时connection.cursor()使用ORM而不是使用ORM来执行原始查询(因为它绝对不是银弹).
我注意到在cursor.close()我完成数据库之后,我在几个地方都没有打电话给我.到目前为止,这不会导致任何错误或性能问题.我想知道如果没有明确地关闭光标我可能会遇到什么样的问题,哪些可能出错?
据我了解,connection并cursor在Django遵循"Python数据库API规范v2.0"(PEP-249).并且,根据它,cursor只要__del__()调用方法,它就会自动关闭.我想这个问题也可能是:在没有被调用时是否存在用例?
仅供参考,我使用的是Python 2.7和Django 1.6.5.
我设法TextArea用两种不同的方式覆盖django管理界面中Widget 的外观:
在admin.py:
class RulesAdmin(admin.ModelAdmin):
formfield_overrides = {
models.TextField: {'widget': Textarea(
attrs={'rows': 1,
'cols': 40})},
}
...
admin.site.register(Rules, RulesAdmin)
Run Code Online (Sandbox Code Playgroud)
这种方式有点过分,因为它会改变该模型的所有TextField.
在forms.py:
from django.forms import ModelForm, Textarea
from TimePortal.models import Rules
class RulesModelForm(ModelForm):
class Meta:
model = Rules
widgets = {
'parameters': Textarea(attrs={'cols': 30, 'rows': 1}),
}
Run Code Online (Sandbox Code Playgroud)
在 admin.py
from AppName.forms import RulesModelForm
class RulesAdmin(admin.ModelAdmin):
form = RulesModelForm
Run Code Online (Sandbox Code Playgroud)
这两种解决方案调整TextArea.但是,在两种解决方案中,文本区域的实际大小超过1行(实际上是2行).以下是呈现的HTML的外观:
<div class="form-row field-parameters">
<div>
<label for="id_parameters" class="required">Parameters:</label>
<textarea id="id_parameters" rows="1" cols="30" name="parameters">{}</textarea> …Run Code Online (Sandbox Code Playgroud) 在Selenium WebDriver中,将元素放入可见区域有两种主要方法:
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
Run Code Online (Sandbox Code Playgroud)Actions actions = new Actions(driver);
actions.moveToElement(element);
actions.perform();
Run Code Online (Sandbox Code Playgroud)这些方法是否相同,应该首选哪一种?
基本上我的问题是你有一个包含'无'的列表你将如何尝试检索列表的总和.下面是我尝试的一个例子,它不起作用,我收到错误:TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'.谢谢
def sumImport(self):
my_list = [[1,2,3,None],[1,2,3],[1,1],[1,1,2,2]]
k = sum(chain.from_iterable(my_list))
return k
Run Code Online (Sandbox Code Playgroud) 有什么区别?使用Angular项目的优势是什么?
我正在使用量角器和茉莉花来测试一个网站.我想知道当前的网址,以验证测试.
我试过了
function waitForUrlToChangeTo(urlRegex) {
var currentUrl;
return browser.getCurrentUrl().then(function storeCurrentUrl(url) {
currentUrl = url;
}
).then(function waitForUrlToChangeTo() {
return browser.wait(function waitForUrlToChangeTo() {
return browser.getCurrentUrl().then(function compareCurrentUrl(url) {
return urlRegex.test(url);
});
});
}
);
}
Run Code Online (Sandbox Code Playgroud)
我正在以这种方式使用这个功能
it('should log', function() {
//element(by.model('user.username')).sendKeys('asd');
//element(by.model('user.password')).sendKeys('asd');
element(by.linkText('Acceder')).click();
waitForUrlToChangeTo("http://localhost:9000/#/solicitudes");
});
Run Code Online (Sandbox Code Playgroud) django ×5
python ×5
javascript ×3
testing ×3
angularjs ×2
protractor ×2
selenium ×2
alembic ×1
css ×1
cursor ×1
database ×1
django-admin ×1
django-nose ×1
excel ×1
html ×1
httpresponse ×1
java ×1
nosetests ×1
sqlalchemy ×1
sum ×1
unit-testing ×1
url ×1
xlsxwriter ×1