рдпрд╣ рдПрдХ рдзреЛрдЦрд╛ рд╢реАрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд▓реЗрдЦ рдХреЗ "рд╕реЗрд▓реЗрдирд┐рдпрдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХреАрдХрд░рдг" рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдЬреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рдПрдХ django рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЬреЗрдирдХрд┐рдВрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реИ ред рдЕрд░реНрдерд╛рддреН,
Selenium
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдПрдХ рд░рд┐рдореЛрдЯ
Jenkins
рд╕рд░реНрд╡рд░ рдкрд░ рдХреИрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдП, рдЬрд┐рд╕рдореЗрдВ рдореЙрдирд┐рдЯрд░ рдФрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рди рд╣реЛрдВред
рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП
black_bunny рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЗрд╕рдореЗрдВ
Jenkins
рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдФрд░ рд╕реЗрдЯрдЕрдк рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдмреИрд╕рд╛рдЦреА рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛, рдЬрдмрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдкреВрд░реА рдЪреАрдЬрд╝ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ
django-selenium
рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ред рдЕрдм рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдФрд░ рд╡реНрдпрд╛рдкрд╛рд░ рдкрд░ред
рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП: рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░
Ubuntu 11.10 x64
рдмрд┐рдирд╛ рдореЙрдиреАрдЯрд░ рдФрд░
X.org
рдФрд░ рдЗрд╕ рдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЧрдИ рдереАред
рд╕реНрдерд╛рдкрдирд╛
рд╣рдо рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд
Jenkins
рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред
рд╕реЗрд▓реЗрдирд┐рдпрдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рдЯрд░реНрдорд┐рдирд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╣рдордиреЗ рдЙрд╕реЗ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рджрд┐рдпрд╛:
sudo apt-get install xvfb
рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реА:
sudo apt-get install --no-install-recommends firefox
рдЯреЗрд╕реНрдЯ рдореЗрдВ рднреА рдЕрдЬрдЧрд░ рдкреИрдХреЗрдЬ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐
рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рдХреИрд╕реЗ
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд▓реЙрдиреНрдЪ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЙрд╕реА
fab
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдЗрдВрдЧрд┐рдд рдХрд░реВрдВрдЧрд╛ред
Selenium
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ (
pip install
рдорд╛рдзреНрдпрдо рд╕реЗ
pip install
):
selenium django-selenium
рд╕рдорд╛рдпреЛрдЬрди
django-selenium
рд▓реЗрдЦрдХ
django-selenium
рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдзрд╛рд╡рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ
Jenkins
рддрд╣рдд рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛, рддреЛ рдореИрдВрдиреЗ
django-jenkins
рд▓рд┐рдП
PROJECT_APPS
рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛, рдЕрд░реНрдерд╛рддреНред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд░рдирд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ
django-jenkins
рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ
django-selenium
рд╕реЗ
selenium
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реИ:
рдЗрд╕ рдХреЛрдб рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдореЗрдВ
test_runner.py
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
test_runner.py
рд▓реЗрдВ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ
"рдкреНрд░реЛрдЬреЗрдХреНрдЯ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
SELENIUM_DISPLAY = ':99' JENKINS_TEST_RUNNER = 'project.test_runner.ProjectRunner'
рд▓рд╛рдВрдЪ
рдЗрд╕ рдЬрдЧрд╣ рдореЗрдВ:

Jenkins
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрдЕрдк рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╢реБрд░реБрдЖрддреА рдХрдорд╛рдВрдб рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
xvfb-run ./manage.py jenkins
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди
X.org
рд╡рд░реНрдЪреБрдЕрд▓
X.org
рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЕрд░реНрдерд╛рддред рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдорд╛рдВрдб рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ
xvfb-run
рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдЖрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛
PROJECT_APPS
рд╕реЗрдЯрд┐рдВрдЧ рд╣реИред
рдпрд╣ рд╕рдм рд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рд╣реИ!