You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Rune Tynan cef1af0c21
Merge pull request #32 from bravosierra99/feature/additional_functionality
1 week ago
discord/ext/test little fixes in bravo branch 1 month ago
docs Add missing module autodocs 2 months ago
tests Add simple tests for the case of sending plain messages, or one with an embed 2 months ago
.gitignore Merge branch 'master' into verify-embed 6 months ago
.readthedocs.yml Add sphinx version requirement 5 months ago
.travis.yml No 3.5 support 5 months ago
LICENSE Add initial functional code, ported from Talos 1 year ago
README.md Move stubs to pyi for consistency, add documentation link and some badges 5 months ago
dev-requirements.txt Add sphinx version requirement 5 months ago
setup.cfg Add fixture for getting a client/bot 5 months ago
setup.py No 3.5 support 5 months ago

README.md

dpytest

Build Status Documentation Status

This is a package to allow testing of discord.py. It is only compatible with the rewrite version, and is still in early alpha. It relies on pytest-asyncio for asynchronous test running, as discord.py is coroutine driven.

Documentation

Documentation can be found at dpytest.readthedocs.io, including examples and tutorials

Usage

TODO: Move this to RTD

dpytest can be used for projects using the default commands.Bot, or those defining their own subclass of bot. For someone using a custom class, code would look something like this:

import discord.ext.test as dpytest
import yourbot
import pytest


@pytest.mark.asyncio
async def test_bot():
    bot = yourbot.BotClass()
    
    # Load any extensions/cogs you want to in here
    
    dpytest.configure(bot)
    
    await dpytest.message("!help")
    dpytest.verify_message("[Expected help output]")

The dpytest framework is designed to be used best with pytest style fixtures, but is technically framework agnostic.
With pytest, the bot setup step would be moved into a fixture so each test could use that fixture. Configure will ensure that all state is reset after each call.