Added ability to add pytest tests

Until now ansible-freeipa repository only had playbook tests. This
commit introduces the ability of creating TestCase classes connected to
the master host. This connection can be used to run commands in the
managed host after the ansible playbook execution is the allowing the
verification of the machine state.
This commit is contained in:
Sergio Oliveira Campos
2020-08-28 11:37:54 -03:00
parent 48db01a5fa
commit af7060d3a9
20 changed files with 644 additions and 134 deletions

View File

@@ -27,3 +27,8 @@ jobs:
number_of_groups: 3
build_number: ${{ parameters.build_number }}
scenario: ${{ parameters.scenario }}
- template: pytest_tests.yml
parameters:
build_number: ${{ parameters.build_number }}
scenario: ${{ parameters.scenario }}

View File

@@ -21,7 +21,8 @@ parameters:
jobs:
- job: Test_Group${{ parameters.group_number }}
displayName: Run tests ${{ parameters.scenario }} (${{ parameters.group_number }}/${{ parameters.number_of_groups }})
displayName: Run playbook tests ${{ parameters.scenario }} (${{ parameters.group_number }}/${{ parameters.number_of_groups }})
timeoutInMinutes: 120
steps:
- task: UsePythonVersion@0
inputs:
@@ -30,10 +31,10 @@ jobs:
- script: |
pip install \
"molecule[docker]>=3" \
"ansible${{ parameters.ansible_version }}" \
jmespath \
pytest \
pytest-split-tests
"ansible${{ parameters.ansible_version }}"
displayName: Install molecule and Ansible
- script: pip install -r requirements-tests.txt
displayName: Install dependencies
- script: |
@@ -46,6 +47,7 @@ jobs:
- script: |
pytest \
-m "playbook" \
--verbose \
--color=yes \
--test-group-count=${{ parameters.number_of_groups }} \

View File

@@ -0,0 +1,55 @@
parameters:
- name: build_number
type: string
- name: scenario
type: string
- name: ansible_version
type: string
default: ">=2.9,<2.10"
- name: python_version
type: string
default: 3.6
jobs:
- job: Test_PyTests
displayName: Run pytests on ${{ parameters.scenario }}
timeoutInMinutes: 120
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '${{ parameters.python_version }}'
- script: |
pip install \
"molecule[docker]>=3" \
"ansible${{ parameters.ansible_version }}"
displayName: Install molecule and Ansible
- script: pip install -r requirements-tests.txt
displayName: Install dependencies
- script: |
mkdir -p ~/.ansible/roles ~/.ansible/library ~/.ansible/module_utils
cp -a roles/* ~/.ansible/roles
cp -a plugins/modules/* ~/.ansible/library
cp -a plugins/module_utils/* ~/.ansible/module_utils
molecule create -s ${{ parameters.scenario }}
displayName: Setup test container
- script: |
pytest \
-m "not playbook" \
--verbose \
--color=yes \
--junit-xml=TEST-results-pytests.xml
displayName: Run tests
env:
IPA_SERVER_HOST: ${{ parameters.scenario }}
RUN_TESTS_IN_DOCKER: true
- task: PublishTestResults@2
inputs:
mergeTestResults: true
testRunTitle: PlaybookTests-Build${{ parameters.build_number }}
condition: succeededOrFailed()