2016-12-28 4 views
1

ich eine tox.ini Datei haben und wollen auf verschiedenen django-Versionen testen:tox Standardabhängigkeit für alle Umgebungen

[tox] 
envlist = 
    py27-django16-{[base]deps] 
    py32-django16-{[base]deps] 
    py27-django17-{[base]deps] 
    py32-django17-{[base]deps] 

[base] 
deps = 
    nose 

[testenv] 
commands = 
    {envpython} setup.py nosetests 
basepython = 
    py27: python2.7 
    py32: python3.2 

deps = 
    django16: Django>=1.6,<1.7 
    django17: Django>=1.7,<1.8 

Aber es funktioniert nicht und Ausnahme machen, dass invalid command 'nosetests', ich denke, dass, weil die Nase nicht ist Eingerichtet.

+0

Fragen zu meiner Antwort? Gib mir Bescheid. –

Antwort

0

Ihre tox.ini hat zwei Probleme:

Erstens: die erzeugten Umgebung Namen in envlist

([email protected]) 17:26:11 [email protected] [1] < ~/work/tox/tests > 1744 % 
tox -l 
py27-django16-{[base]deps] 
py32-django16-{[base]deps] 
py27-django17-{[base]deps] 
py32-django17-{[base]deps] 

Wie Sie sehen, ist nichts mit Ihren Eingaben durchgeführt, wie die geschweiften Klammern nicht geschlossen sind. Aber selbst wenn sie geschlossen wären, würde die Substitution nicht stattfinden, da die Überweisung an die Deponien nicht dorthin gehört. Was Sie wollen, zu sagen, die richtigen Umgebungen für Ihre Bedürfnisse zu generieren sieht wie folgt aus (wenn ich Ihre Absichten richtig erraten - anders klären bitte in einem Kommentar):

envlist = {py27,py32}-django{16,17} 

Dieser diese Umgebungs Namen erzeugt:

([email protected]) 17:26:20 [email protected] [0] < ~/work/tox/tests > 1745 % 
tox -l 
py27-django16 
py27-django17 
py32-django16 
py32-django17 

Sie können dann die Faktoren (zB py27 oder django16) verwenden, um anzugeben, was geschehen soll, wenn Sie es bereits richtig gemacht haben. Es ist schwer, dieses Konzept in den Griff zu bekommen, aber das könnte Ihnen den Anfang machen. Werfen Sie auch einen Blick auf die docs about this feature - IMO erklären sie es ziemlich gut.

Das Hauptproblem ist, dass Sie sich auf die Deps beziehen müssen, wo Sie sie benötigen - in den Deps-Eintrag Ihres testenv Abschnitt wie in der tox configuration specification beschrieben.

Ein minimales würde funktionierendes Beispiel sein:

[base] 
deps = nose 

[testenv] 
deps = {[base]deps} # <-- reference your base deps here 
commands = pip freeze 

Die adpated tox.ini aus Ihrer Frage aussehen würde jetzt:

[tox] 
envlist = {py27,py32}-django{16,17} 

[base] 
deps = nose 

[testenv] 
commands = {envpython} setup.py nosetests 
basepython = 
    py27: python2.7 
    py32: python3.2 
deps = 
    {[base]deps} 
    django16: Django>=1.6,<1.7 
    django17: Django>=1.7,<1.8 

In Ihrem Fall aber - wenn man es in allen nur installiert werden soll Umgebungen brauchen Sie nicht einmal den Umweg über einen [base] Abschnitt. Also die empfohlenen tox.ini in Ihrem Fall wäre:

[tox] 
envlist = {py27,py32}-django{16,17} 

[testenv] 
basepython = 
    py27: python2.7 
    py32: python3.2 
deps = 
    nose # just add the dep here unconditionally for all envs 
    django16: Django>=1.6,<1.7 
    django17: Django>=1.7,<1.8 
commands = {envpython} setup.py nosetests 
Verwandte Themen