microsoft/semantic-link-labs-run-tests
Guide for running pytest tests locally. Use this when running tests to verify code changes.
npx skills add https://github.com/microsoft/semantic-link-labs --skill run-tests
This skill covers running pytest tests for the Semantic Link Labs project.
Use this skill when you need to:
| Component | Details |
|-----------|---------|
| Framework | pytest |
| Location | tests/ directory |
| Configuration | pyproject.toml |
# Install package in editable mode with test dependencies
pip install -e ".[test]"
Create conda environment from environment.yml:
conda env create -f environment.yml
conda activate fabric
pip install -e .
# Run all tests
pytest -s tests/
# Run with verbose output
pytest -sv tests/
# Run specific test file
pytest -s tests/test_example.py
# Run specific test by name pattern
pytest -s tests/ -k test_my_function
# Run multiple tests by pattern
pytest -s tests/ -k "test_list or test_create"
# Stop on first failure
pytest -sx tests/
pytest automatically discovers tests in:
test_*.py or *_test.pytest_*Test*# Show test names and results
pytest -v tests/
# Show test names with print statements
pytest -sv tests/
The -s flag captures stdout:
# Show print output during tests
pytest -s tests/
# Show slowest 10 tests
pytest --durations=10 tests/
# Run tests matching pattern
pytest -k "workspace" tests/
# Run tests NOT matching pattern
pytest -k "not slow" tests/
# Combine patterns
pytest -k "workspace and not admin" tests/
# Run specific test file
pytest tests/test_workspaces.py
# Run tests in directory
pytest tests/admin/
pytest -x tests/
pytest --pdb tests/
pytest -l tests/
pytest -vvv tests/
import pytest
import pandas as pd
def test_my_function_returns_dataframe():
"""Test that my_function returns a DataFrame."""
from sempy_labs import my_function
result = my_function()
assert isinstance(result, pd.DataFrame)
def test_my_function_with_parameter():
"""Test my_function with specific parameter."""
from sempy_labs import my_function
result = my_function(workspace="Test Workspace")
assert not result.empty
assert "Name" in result.columns
def test_my_function_raises_on_invalid_input():
"""Test that my_function raises ValueError on invalid input."""
from sempy_labs import my_function
with pytest.raises(ValueError, match="Invalid"):
my_function(invalid_param="bad value")
The project uses GitHub Actions for CI. See .github/workflows/build.yaml:
- name: Test with pytest
shell: bash -el {0}
run: |
pytest -s tests/
Before committing code changes:
# Run all tests
pytest -s tests/
# Run tests for modified area
pytest -s tests/ -k relevant_test_pattern
# Check for any failures
# If failures, fix code and re-run
If tests fail with import errors:
# Ensure package is installed in editable mode
pip install -e .
If tests fail with missing package:
# Install test dependencies
pip install -e ".[test]"
If tests behave unexpectedly:
# Recreate conda environment
conda env remove -n fabric
conda env create -f environment.yml
conda activate fabric
pip install -e .
Take microsoft/semantic-link-labs-run-tests from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.