小编ale*_*cxe的帖子

35
推荐指数
3
解决办法
2万
查看次数

如何使用django-nose运行单个测试或单个TestCase?

使用Django的普通测试运行器,您可以深入研究在特定应用程序,TestCase的特定子类或TestCase的特定子类中的特定测试中运行测试.

例如:

./manage.py test myapp.MyTestCase.test_something
Run Code Online (Sandbox Code Playgroud)

但是,除了测试特定应用程序之外,django-nose似乎不支持任何其他内容.我如何复制最后两个行为?

testing django unit-testing nosetests django-nose

35
推荐指数
2
解决办法
1万
查看次数

使用带有Django的LiveServerTestCase时使用代码登录

所以我有一个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测试登录的页面.

提前致谢.

django selenium integration-testing

34
推荐指数
2
解决办法
5286
查看次数

sqlalchemy:使用参数绑定执行原始sql

我正在尝试使用带有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

34
推荐指数
1
解决办法
3万
查看次数

显式cursor.close()的必要性

我不时connection.cursor()使用ORM而不是使用ORM来执行原始查询(因为它绝对不是银弹).

我注意到在cursor.close()我完成数据库之后,我在几个地方都没有打电话给我.到目前为止,这不会导致任何错误或性能问题.我想知道如果没有明确地关闭光标我可能会遇到什么样的问题,哪些可能出错?

据我了解,connectioncursor在Django遵循"Python数据库API规范v2.0"(PEP-249).并且,根据它,cursor只要__del__()调用方法,它就会自动关闭.我想这个问题也可能是:在没有被调用时是否存在用例?

仅供参考,我使用的是Python 2.7和Django 1.6.5.

python database django database-connection cursor

33
推荐指数
2
解决办法
1万
查看次数

在django admin中控制TextArea小部件的大小

我设法TextArea用两种不同的方式覆盖django管理界面中Widget 的外观:

使用formfield_overrides

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)

css python django django-admin

32
推荐指数
1
解决办法
2万
查看次数

scrollIntoView vs moveToElement

在Selenium WebDriver中,将元素放入可见区域有两种主要方法:

  1. 滚动到视图中:

    ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用moveToElement浏览器操作:

    Actions actions = new Actions(driver);
    actions.moveToElement(element);
    actions.perform();
    
    Run Code Online (Sandbox Code Playgroud)

这些方法是否相同,应该首选哪一种?

html javascript java selenium selenium-webdriver

32
推荐指数
1
解决办法
3万
查看次数

使用Python对包含"无"的列表求和

基本上我的问题是你有一个包含'无'的列表你将如何尝试检索列表的总和.下面是我尝试的一个例子,它不起作用,我收到错误: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)

python sum

31
推荐指数
4
解决办法
2万
查看次数

31
推荐指数
1
解决办法
1万
查看次数

如何使用量角器获取当前网址?

我正在使用量角器和茉莉花来测试一个网站.我想知道当前的网址,以验证测试.

我试过了

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)

javascript testing url angularjs protractor

30
推荐指数
3
解决办法
5万
查看次数